私はHackerRankのいくつかの問題を解決するために作業しています。私はすでにPythonで同じ解決策を実装しようと考えていました。私のコードは私の以前のPythonソリューションをほぼ正確に反映していますが、if input_str[i-1] == input_str[i]
行には範囲外の例外があります。この不一致を引き起こす可能性のあるPythonループでは、異なる動作がありますか?テストケースは、両方で同じです。Python対Javaループ
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
solve(input);
}
public static void solve(String str) {
String s = new String(str);
for (int i=1; i < s.length(); i++) {
if (s.charAt(i-1) == s.charAt(i)) {
s = s.substring(0, i-1) + s.substring(i+1, s.length());
i = 0;
}
if (s.length() == 0) {
System.out.println("Empty String");
return;
}
}
System.out.println(s);
}
}
これは同じ問題のコードですが、Python 2.7を使用しています。
input_str = raw_input()
for i in xrange(1, len(input_str)):
if input_str[i-1] == input_str[i]:
input_str = input_str[0:i-1] + input_str[i+1:len(input_str)]
i = 0
if len(input_str) == 0:
print "Empty String"
break
print input_str
は、ループのためのJavaの動作を模倣するPythonの代替はありますか?私はループバインドを動的に変更することができる何か? –
ループのように見えるものが必要な場合は、本当に唯一のことは、Pythonの 'while'ループです。問題を解決する他の方法は、代わりに再帰を使うか、アルゴリズムを変更して静的なforループしか必要ないようにすることです。 – Gamrix