나는 자바를 처음 접했고 주어진 문자열이 주기적인지 아닌지를 검사하는 프로그램을 작성했다. 더 작은 문자열을 몇 번 연결하면 문자열을 나타낼 수 없다. . 예 "1010"은 주기적이지만 "1011"은 아닙니다. 여기 내 코드가있다. 컴파일되지만 모든 문자열이 주기적이지 않다는 것을 알려주는 것이 문제입니다. 문제는 isPeriodic
함수의 for 루프에있는 것 같습니다. 제발 도와주세요.자바 문제로 전달되는 매개 변수
import java.io.*;
import java.util.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws java.lang.Exception {
java.io.BufferedReader R = new java.io.BufferedReader
(new java.io.InputStreamReader(System.in));
//String st = R.readLine();
String st = "10101010";
if (isPeriodic(st) == false) {
System.out.println(" Non Periodic");
}
else {
System.out.println("Periodic");
}
}
private static boolean isPeriodic(String s)
{
String temp = s;
int i;
boolean pflag = false;
for (i = 1; i <= (s.length()/2); i++) {
s = rotateNltr(s,i);
if (s == temp) {
pflag = true;
break;
}
}
return pflag;
}
private static String rotateNltr(String s, int n) {
if(n > s.length()) {
return null;
}
for (int i = 0; i < n; i++) {
s = leftRotatebyOne(s);
}
//System.out.println(s);
return s;
}
private static String leftRotatebyOne(String s) {
char[] temp = s.toCharArray();
char t = temp[0];
for (int i = 0 ; i < s.length()-1 ;i++) {
temp[i] = temp [i+1];
}
temp[s.length()-1] = t;
String r = new String(temp);
//System.out.println(r);
return r;
}
}