Python与Java循环

Jac*_*yan 1 python java string for-loop

我正在解决HackerRank上的一些问题,我想我会尝试在Python中实现我已经在Java中正确解决的相同解决方案.虽然我的代码几乎完全反映了我之前的Python解决方案,但我if input_str[i-1] == input_str[i]在行中遇到了一个超出范围的异常.Python循环中是否存在可能导致此差异的不同行为?两者的测试用例相同.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是同一问题的代码,但使用的是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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

在Java循环中,s.length()每次迭代都会重新计算.在Python中,len(input_str)只是计算一次,并且input_strif块中修改后没有反映正确的长度.

同样,分配i = 0不按您希望的方式工作.i将接受下一个值xrange,忽略您尝试重置其值.