目录
1328. 破坏回文串
题目形貌:
实现代码与解析:
贪心
原理思路:
1328. 破坏回文串
题目形貌:
给你一个由小写英文字母组成的回文字符串 palindrome ,请你将此中 一个 字符用恣意小写英文字母更换,使得结果字符串的 字典序最小 ,且 不是 回文串。
请你返回结果字符串。如果无法做到,则返回一个 空串 。
如果两个字符串长度相同,那么字符串 a 字典序比字符串 b 小可以这样界说:在 a 和 b 出现不同的第一个位置上,字符串 a 中的字符严格小于 b 中的对应字符。比方,"abcc” 字典序比 "abcd" 小,由于不同的第一个位置是在第四个字符,显然 'c' 比 'd' 小。
示例 1:
- <strong>输入:</strong>palindrome = "abccba"
- <strong>输出:</strong>"aaccba"
- <strong>解释:</strong>存在多种方法可以使 "abccba" 不是回文,例如 "<em><strong>z</strong></em>bccba", "a<em><strong>a</strong></em>ccba", 和 "ab<em><strong>a</strong></em>cba" 。
- 在所有方法中,"aaccba" 的字典序最小。
复制代码 示例 2:
- <strong>输入:</strong>palindrome = "a"
- <strong>输出:</strong>""
- <strong>解释:</strong>不存在替换一个字符使 "a" 变成非回文的方法,所以返回空字符串。
复制代码 提示:
- 1 <= palindrome.length <= 1000
- palindrome 只包罗小写英文字母。
实现代码与解析:
贪心
- class Solution {
- public String breakPalindrome(String palindrome) {
-
- int n = palindrome.length();
- if (n == 1) {
- return "";
- }
- char[] cs = palindrome.toCharArray();
- for (int i = 0; i * 2 + 1 < n; i++) {
- if (cs[i] != 'a') {
- cs[i] = 'a';
- return new String(cs);
- }
- }
- cs[n - 1] = 'b';
- return new String(cs);
- }
- }
复制代码 原理思路:
n = 1,无论如何换都是回文。遍历字符串一半,如果不为a换成a。如果前半部门全为a,那么根据回文特性,该字符串全为a,只有把最后一个字符修改为小于a的第一个值b即可。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |