Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python vs Java循环_Java_Python_String_For Loop - Fatal编程技术网

Python vs Java循环

Python vs Java循环,java,python,string,for-loop,Java,Python,String,For Loop,我正在研究HackerRank上的一些问题,我想我会尝试用Python实现我已经用Java正确解决的相同解决方案。尽管我的代码几乎完全反映了我以前的Python解决方案,但我在if-input\u-str[I-1]==input\u-str[I]行中遇到了一个越界异常。Python循环中是否存在可能导致这种差异的不同行为?这两个测试用例是相同的 public class Solution { public static void main(String[] args) {

我正在研究HackerRank上的一些问题,我想我会尝试用Python实现我已经用Java正确解决的相同解决方案。尽管我的代码几乎完全反映了我以前的Python解决方案,但我在
if-input\u-str[I-1]==input\u-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);
    }
}

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


类似地,分配
i=0
也不能按您希望的方式工作
i
将接受
xrange
中的下一个值,忽略您尝试重置它的值。

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


类似地,分配
i=0
也不能按您希望的方式工作
i
将接受
xrange
中的下一个值,忽略您尝试重置它的值。

我相信您这样做是在浪费大量时间和系统资源。更好的解决方案是将算法更改为只迭代
input\u str
一次的算法。在这种情况下,您将获得执行时间。我编辑的代码如下所示:

input_str = input()
input_strR = input_str[0]
for i in range(1, len(input_str)):
    if input_str[i-1] != input_str[i]:
        input_strR = input_strR + input_str[i]
    if len(input_str) == 0:
        print ("Empty String")
        break

print (input_strR)

在本例中,引入了一个新变量,并添加了所有第一个字符,同时删除了重复字符。

我相信这样做会浪费大量时间和系统资源。更好的解决方案是将算法更改为只迭代
input\u str
一次的算法。在这种情况下,您将获得执行时间。我编辑的代码如下所示:

input_str = input()
input_strR = input_str[0]
for i in range(1, len(input_str)):
    if input_str[i-1] != input_str[i]:
        input_strR = input_strR + input_str[i]
    if len(input_str) == 0:
        print ("Empty String")
        break

print (input_strR)

在本例中,引入了一个新变量,添加了所有的前几个字符,同时删除了重复字符。

我将以funaquarius24为基础,甚至不使用索引:

input_str = raw_input()
result = input_str[0]
for c in input_str[1:]:
    if c != result[-1]:
        result += c
print(result)

我会以funaquarius24为基础,甚至不使用索引:

input_str = raw_input()
result = input_str[0]
for c in input_str[1:]:
    if c != result[-1]:
        result += c
print(result)

是否有Python替代方案来模拟Java for循环的行为?我可以动态修改循环绑定的东西?如果您想要循环看起来像这样的东西,那么唯一可以做的就是python
while
loop。解决问题的其他方法是使用递归,或者更改算法,使其只需要一个静态for循环。是否有Python替代方案来模拟Java for循环的行为?我可以动态修改循环绑定的东西?如果您想要循环看起来像这样的东西,那么唯一可以做的就是python
while
loop。解决问题的其他方法是使用递归,或者更改算法,使其只需要一个静态for循环。