class Solution { public String longestPalindrome(String s) { //Scanner sc = new Scanner(System.in); //String s = sc.next(); if(s.length() == 1){ //System.out.println(s.charAt(0)); return s.charAt(0) + ""; }else if(s.length() == 2){ if(s.charAt(0) == s.charAt(1)){ //System.out.println(s); return s; }else{ //System.out.println(s.charAt(0) + ""); return s.charAt(0) + ""; } } StringBuilder sv = new StringBuilder(s); if(sv.reverse().toString().equals(s)){ return s; } String flag = ""; for(int i = 0;i < s.length();i++){ for(int j = i+1;j < s.length();j++){ if(j-i+1 <= flag.length()){ continue; } StringBuilder sb = new StringBuilder(s.substring(i,j+1)); if(sb.reverse().toString().equals(s.substring(i,j+1))){ flag = s.substring(i,j+1); break; } } } if(flag.equals("")){ flag = s.charAt(0) + ""; } //System.out.println(flag); return flag; } } 帮我看看还可以在哪里优化
时间: 2023-03-30 22:00:54 浏览: 117
虚拟扫描仪Virtual Twain Scanner 32/64位
作为一个 AI 语言模型,我认为这段代码可以在以下几个方面进行优化:
1. 可以使用中心扩展算法来寻找最长回文子串,这样可以减少循环次数,提高效率。
2. 可以使用动态规划算法来寻找最长回文子串,这样可以避免重复计算,提高效率。
3. 可以使用 Manacher 算法来寻找最长回文子串,这是一种时间复杂度为 O(n) 的算法,效率非常高。
4. 可以使用字符串匹配算法来寻找最长回文子串,例如 KMP 算法、Boyer-Moore 算法等,这样可以避免不必要的比较,提高效率。
总之,寻找最长回文子串是一个经典的算法问题,有很多种解法,可以根据具体情况选择最适合的算法来进行优化。
阅读全文