问题来源: https://leetcode.com/problems/palindrome-partitioning/
我自己写的代码: https://pastebin.ubuntu.com/p/RrVQM75gvB/
Q1: 最终输出是很多组字符串, 我再append到一起, 要如何判断各组字符串之间是否相同的情况吗, 因为字符串实际上存的是对应的地址, 直接比对的话就相当于比对地址了. 我有个想法, 但是感觉很麻烦, 想到就是这个主串再拆成数组, 然后用子串一个个比对. 请问还有什么更优的方法?
Q2: 补充一个问题, 如果我后续使用了int length();等方法, 则为什么我string s必须要 = "xxx";这样子初始化, 才能正常编译, 否则就会提示local variable may not have been initialized
是因为这样子定义string+赋值计算机才会给s分配空间吗?

p.s. 刚学到自己第一门语言Java的This部分, 知识匮乏, 希望也能得到关于整个代码实现的优化帮助(逻辑思维), 非常感谢x

    Coralare 直接比对的话就相当于比对地址了

    这句话好像说得不对,你要明确对比的方法,==还是equals(),还是compareTo()

    我想你需要的是charAt(),两个String无法用==比较内容,但是两个char可以

    你的代码我看了一下,和Leetcode上的并不完全一致,实际上你可以自己描述你的输入和输出的

    我对Java不是特别熟悉,改你的代码实际上就是Code Review的过程,所以我没有什么资格就是了

    不过Leetcode官方的题解已经相当可以,你稍微看一看就能看懂,如果你看不懂那你就可以考虑你放一放,先学完基础的语法和简单的数据结构以及算法,并且我认为Leetcode并不怎么适合初学者

    题解:分割回文串官方题解

      WLGBC 是的, 因为官方题解最开始怎么输入就看不懂, 就按自己会的进行输入了orz
      用charAt这样每次生成一个合适的子串sb后再与主串result对比, 如果result非常长这样不就是很浪费时间(每一次都从主串头开始对比)

        Coralare 并不是用charAt构造子串,而是之间在字符串上比较,用charAt可以获得这个索引的字符,然后比较某一区间的字符是否是回文串,比较成功后再用substring拿到子串,实际上使用字符的比较简化字符串的比较,毕竟你用字符数组之间比较也是一点一点比较,你说的有点像kmp算法,但这题并不需要

        然后Q2的话,用String a = null;就可以了,毕竟你中间的步骤如果出错,String没值,.length()他就会出错

          WLGBC 嗯好的, 明白了, 非常感谢
          另外提到KMP, 如果想专门去提高对递归方法的理解和使用能力, 有什么方法可以针对去训练吗? 从汉诺塔到八皇后再到KMP我自己每次都要想好久才能理解为什么代码这样写能够实现(八皇后目前还没想懂怎么做)

            © 2018-2025 0xFFFF