【算法千题案例】每日LeetCode打卡——88. 验证回文字符串 Ⅱ
【摘要】 @TOC 📢前言 🚀 算法题 🚀 🌲 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程😜🌲 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题🌲 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧🧐!🌲 今天是力扣算法题持续打卡第88天🎈! 🚀 算法题 🚀 🌲原题样例: 验证回文字符串 Ⅱ给定一个非空字符串 s,最多删除一...
@TOC
📢前言
🚀 算法题 🚀 |
- 🌲 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程😜
- 🌲 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题
- 🌲 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧🧐!
- 🌲 今天是力扣算法题持续打卡第88天🎈!
🚀 算法题 🚀 |
🌲原题样例: 验证回文字符串 Ⅱ
给定一个非空字符串 s
,最多删除一个字符。判断是否能成为回文字符串。
示例1:
输入: s = "aba"
输出: true
示例2:
输入: s = "abca"
输出: true
解释: 你可以删除c字符。
示例3:
输入: s = "abc"
输出: false
提示:
- 1 <= s.length <= 105
- s 由小写英文字母组成
🌻C#方法:贪心算法
与判断简单回文的变体类似,只不过在遇到不同的字符时再分为两种情况去判断是否为回文子串
- 要么前面的指针跳一位(p1+1)
- 要么后面的指针跳一位(p2-1)
代码:
public class Solution {
public bool ValidPalindrome(string s) {
return IsPalindrome(s,0,s.Length-1,false);
}
public bool IsPalindrome(string str, int p1, int p2, bool omited)
{
if (p1 >= p2) return true;
if (str[p1] == str[p2]) return IsPalindrome(str, p1 + 1, p2 - 1, omited);
else if (str[p1] != str[p2] && omited == false)
return IsPalindrome(str, p1 + 1, p2, true) || IsPalindrome(str, p1, p2 - 1, true);
else return false;
}
}
执行结果
通过
执行用时:88 ms,在所有 C# 提交中击败了77.50%的用户
内存消耗:50.1 MB,在所有 C# 提交中击败了6.50%的用户
🌻Java 方法:贪心
思路解析
代码:
class Solution {
public boolean validPalindrome(String s) {
int low = 0, high = s.length() - 1;
while (low < high) {
char c1 = s.charAt(low), c2 = s.charAt(high);
if (c1 == c2) {
++low;
--high;
} else {
return validPalindrome(s, low, high - 1) || validPalindrome(s, low + 1, high);
}
}
return true;
}
public boolean validPalindrome(String s, int low, int high) {
for (int i = low, j = high; i < j; ++i, --j) {
char c1 = s.charAt(i), c2 = s.charAt(j);
if (c1 != c2) {
return false;
}
}
return true;
}
}
执行结果
通过
执行用时:7 ms,在所有 Java 提交中击败了41.41%的用户
内存消耗:38.8 MB,在所有 Java 提交中击败了94.40%的用户
复杂度分析
时间复杂度:O( n )
空间复杂度:O(1)
💬总结
- 今天是力扣算法题打卡的第八十八天!
- 文章采用
C#
和Java
两种编程语言进行解题 - 一些方法也是参考力扣大神写的,也是边学习边分享,再次感谢算法大佬们
- 那今天的算法题分享到此结束啦,明天再见!
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)