나는 HackerRank에 관한 몇 가지 문제를 해결하려고 노력하고 있으며 파이썬에서 이미 자바로 정확하게 해결 한 동일한 솔루션을 구현하려고한다고 생각했다. 내 코드가 이전의 Python 솔루션을 거의 정확하게 반영하지만, if input_str[i-1] == input_str[i]
행에 예외가 있습니다. 이 불일치를 유발할 수있는 파이썬 루프에서 다른 동작이 있습니까? 두 경우 모두 테스트 케이스가 동일합니다.파이썬 대 자바 루프
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
루프 자바의 동작을 모방하는 파이썬 대안이 있습니까를? 루프 바인딩을 동적으로 수정할 수있는 부분은 무엇입니까? –
for 루프처럼 보이는 것을 원한다면 정말로 할 수있는 것은 파이썬'while' 루프입니다. 문제를 해결하는 다른 방법은 재귀를 사용하거나 알고리즘을 변경하여 정적 for 루프 만 필요하도록하는 것입니다. – Gamrix