算法收集[非LeetCode]

1.应用场景

锻炼思维, 为自身成长和以后的工作生活打基础.

2.学习/参考

1.如何判断一个字符串是否是回文字符串的问题,我想你应该听过,我们今天的题目就是基于这个问题的改造版本。

如果字符串是通过单链表来存储的,那该如何来判断是一个回文串呢?你有什么好的解决思路呢?相应的时间空间复杂度又是多少呢?

详见: https://time.geekbang.org/column/article/41013

 

TBD

思路:

使用快慢两个指针找到链表中点,慢指针每次前进一步,快指针每次前进两步。在慢指针前进的过程中,同时修改其 next 指针,使得链表前半部分反序。最后比较中点两侧的链表是否相等。//暂时不明白!!!

 

实现:

https://github.com/andavid/leetcode-java/blob/master/note/234/README.md

3.问题

1.如何判断一个字符串是否是回文字符串的问题

参考:https://www.jianshu.com/p/37cb3b8256a8

解法:有三种

①翻转字符串,然后将翻转后的字符串与原始字符串比较.

 

②将字符串分成两部分,将第二部分字符串翻转,比较第一部分字符串和翻转后的第二部分字符串。注意在将字符串分割成两半的时候,由于字符串长度可能为奇数或者偶数,所以我们使用//的取整除法,就可以得到每一半的长度

 

③比较第一个字母和最后一个字母,比较第2个字母和倒数第2个字母...直到到达字符串中间时停止。

 

2.TBD

 

4.参考

https://github.com/andavid/leetcode-java/blob/master/note/234/README.md

https://www.jianshu.com/p/37cb3b8256a8

https://time.geekbang.org/column/article/41013

后续补充

...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值