做搜狗手机网站快速排,企业服务平台上线,门户网站做等保需要备案哪些,网站开发职业规划实施题目
给定一个字符串#xff0c;请判断如果最多从字符串中删除一个字符能不能得到一个回文字符串。例如#xff0c;如果输入字符串abca#xff0c;由于删除字符’b’或’c’就能得到一个回文字符串#xff0c;因此输出为true。
分析
本题还是从字符串的两端…题目
给定一个字符串请判断如果最多从字符串中删除一个字符能不能得到一个回文字符串。例如如果输入字符串abca由于删除字符’b’或’c’就能得到一个回文字符串因此输出为true。
分析
本题还是从字符串的两端开始向里逐步比较两个字符是不是相同。如果相同则继续向里移动指针比较里面的两个字符。如果不相同按照题目的要求在删除一个字符之后再比较其他的字符就能够形成一个回文。由于事先不知道应该删除两个不同字符中的哪一个因此两个字符都可以进行尝试。
解
public class Test {public static void main(String[] args) {boolean result validPalindrome(abcea);System.out.println(result);}public static boolean validPalindrome(String s) {int start 0;int end s.length() - 1;for (; start s.length() / 2; start, --end) {if (s.charAt(start) ! s.charAt(end)) {break;}}return start s.length() / 2 || isPalindrome(s, start, end - 1) || isPalindrome(s, start 1, end);}private static boolean isPalindrome(String s, int start, int end) {while (start end) {if (s.charAt(start) ! s.charAt(end)) {break;}start;end--;}return start end;}
}