首页 > 编程知识 正文

用指针判断一个字符串是否为回文,java回车转义字符

时间:2023-05-05 04:44:18 阅读:28195 作者:2031

双重指针-回文字符串的标题地址: 680. Valid Palindrome II

主题如下:

Given a string s,returntrueifthescanbepalindromeafter 3358 www.Sina.com/onecharacterfromit。

解决问题的想法:

这个问题虽然不是很长,但都是重要的一点

必须是回文字符串

回文是指正读反读都相同的词汇和句子。 例如,如下所示。

abcba

上海的自来水来自海上

在标题有追加要求的情况下,删除1个字符后成为回文字符串的字符串也是合法的

例如:

阿坝州

abca可以删除b,也可以删除c。 最后得到的结果都是回文:

aba

aca

按照解题思路解题:

//回文字符串const isValidPalindrome=(str )={ let lo=0,hi=str.length - 1; wile(lohi ) if ) str[lo]!==str [ hi ]; (lo、hi--; }返回真; (;/* * @ param { string } s * @ return { boolean } */varvalidpalindrome=function (s ) { let lo=0,hi=s.length-1 whid==s [ hi ] (返回(|isvalidpalindrome ) s.substring(lo,hi )|is valid palindrome (s.substring ) lo1,hi 1 ) ) }返回真; (; 其实这个问题用了两次双指针。 一次在validPalindrome中判断,另一次在isValidPalindrome中判断。

单独分割isValidPalindrome是为了便于调用,根据要求2,对子字符串是否也是回文字符串进行两次判断。

删除左边的文字删除右边的文字,根据删除的文字,确实可能会影响回答的正确与否。

以abbca为例,第一个和最后一个字符都是a,因此要判断的子字符串是bbc。 在这种情况下,通过删除左或右字符来决定答案的差异:

删除左边的文字

修改的字符串是abca,不是合法的回文字符串

删除右侧的字符

修改后的字符串是abba,是合法的回文字符串

因此,有必要判断修正了两次的字符串是否是回文字符串,这也是在return中取了两次substring的理由。

使用substring时也请注意。 substring的取值包既没有右边也没有左边。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。