算法面试——字符串:反转、最长回文、字符串解码
📅 2026/8/3 1:49:38
👁️ 阅读次数
📝 编程学习
一、反转字符串
publicvoidreverseString(char[]s){intleft=0,right=s.length-1;while(left<right){chartemp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}}二、最长回文子串
publicStringlongestPalindrome(Strings){intn=s.length();boolean[][]dp=newboolean[n][n];intstart=0,maxLen=1;for(inti=0;i<n;i++)dp[i][i]=true;for(intlen=2;len<=n;len++){for(inti=0;i+len-1<n;i++){intj=i+len-1;if(s.charAt(i)==s.charAt(j)){dp[i][j]=len==2||dp[i+1][j-1];}if(dp[i][j]&&len>maxLen){start=i;maxLen=len;}}}returns.substring(start,start+maxLen);}三、字符串解码
publicStringdecodeString(Strings){Stack<Integer>countStack=newStack<>();Stack<String>strStack=newStack<>();Stringcurrent="";intnum=0;for(charc:s.toCharArray()){if(Character.isDigit(c)){num=num*10+(c-'0');}elseif(c=='['){countStack.push(num);strStack.push(current);num=0;current="";}elseif(c==']'){intcount=countStack.pop();Stringprev=strStack.pop();current=prev+current.repeat(count);}else{current+=c;}}returncurrent;}💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!
编程学习
技术分享
实战经验