全部评论
大佬的链接,说的很详细 https://leetcode.wang/leetcode-214-Shortest-Palindrome.html
我的是把string转成stringbuffer,然后从第零个开始删字母,删一次判断一次,一旦剩下的是回文,就把删了的加在后面
回文串:1、找到以最后一个元素结尾的最长回文 2、原字符串减去这个最长回文字符串得到新字符串 3、原字符串+新字符串的逆序
public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()){ String rs=new String(); String s=in.next(); StringBuffer sb=new StringBuffer(); StringBuffer sb1=new StringBuffer(s); for(int i=s.length()-1;i>=0;i--) { sb.append(s.charAt(i)); } rs=sb.toString(); for(int i=rs.length()-1;i>=1&&!isTrue(sb1.toString());i--){ sb1.insert(rs.length(),rs.charAt(i)); } System.out.println(sb1); //输出得到的最短字符串 } in.close(); //输出得到的最短字符串 } public static boolean isTrue(String s) { boolean flag=true; for(int i=0;i<=s.length()/2;i++){ if(s.charAt(i)!=s.charAt(s.length()-i-1)){ flag=false; break; } } return flag; }
相关推荐
点赞 评论 收藏
分享