[程式設計題] 字串成環判斷是否為迴文字串--位元組跳動筆試題
阿新 • • 發佈:2020-07-04
字串成環判斷是否為迴文字串
題目描述
輸入一個字串,將該字串首尾成環,判斷能否從中某位置切分,然後產生迴文字串,是則輸出Yes,否則輸出No
示例
例如1:
輸入(字串)
aab
成環後從a a 中切分,得到迴文字串:
aba
輸出:Yes
Java程式碼
package ncompanydemos.p2_bytedance; import java.util.Scanner; /** * @author jiyongjia * @create 2020/7/4 - 15:03 * @descp: 輸入一個字串,將該字串首尾成環,判斷能否從中某位置切分,然後產生迴文字串 * * 例如:aba 成環後從a a 中切分,得到迴文字串 aba 輸出Yes,是迴文字串 */ public class Exam02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); //呼叫 String res = solve(s); System.out.println(res); } public static String solve(String s){ char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { int length = chars.length; StringBuilder stringBuilder = new StringBuilder(); int cur=i; while (length>0){ stringBuilder.append(chars[cur%(chars.length)]); cur++; length--; } //呼叫迴文判斷 boolean compare = compare(stringBuilder.toString()); if (compare){ return "Yes"; }else { continue; } } //如果判斷完還是沒有迴文的,返回No return "No"; } //字串迴文判斷 private static boolean compare(String s) { char[] chars = s.toCharArray(); int left = 0; int right = chars.length-1; int flag = chars.length/2; while (flag>0){ if(chars[left]!=chars[right]){ return false; }else { left++; right--; flag--; } } return true; } }
測試輸出
測試1
測試2