网站开发维护费用,站内seo和站外seo区别,百度反馈中心,做网站不花钱链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 代码#xff1a;
class Solution {public String countAndSay(int n) {//要进行 n - 1 次描述才能得到结果// last 代表当前要描述的字符串String last1;// ret 代表描述…链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 代码
class Solution {public String countAndSay(int n) {//要进行 n - 1 次描述才能得到结果// last 代表当前要描述的字符串String last1;// ret 代表描述 last 字符串得到的结果for(int i1;in;i){StringBuilder retnew StringBuilder();//进行描述int lengthlast.length();for(int left0,right0;leftlengthrightlength;){while(rightlengthlast.charAt(left)last.charAt(right)){right;}//将个数拼接到 ret 字符串上ret.append(right-left);//将个数对应的字符拼接到 ret 字符串上ret.append(last.charAt(left));leftright;}//进行了一轮描述lastret.toString();}return last;}
}
题解 本题的解法比较简单粗暴直接按照题目的要求进行模拟即可 先要搞明白如何描述一个数字字符串我们可以通过双指针来进行描述比如有字符串 11222 需要我们进行描述描述的结果应为 2132 先让 L 和 R 指针指向下标为 0 的位置,描述的核心就是要获得连续字符的个数首先判断 R 指针和 L 指针指向的数据是否相同相同 R 指针就向后移
1 1 2 2 2
L
R 根据上述要求R 指针移动到当前位置此时 R 指针指向的数据和 L 指针指向的不同L 指针指向的就是当前数的数据个数为 R - L将个数和数据拼接到字符串中得到 21
1 1 2 2 2
L R L 指针指向的数据已经数好了让 L 指针移动到 R 指针所在的位置数下一个连续数据的个数
1 1 2 2 2 L R 同理当 L 和 R 指针相同 R 指针就向后移动,要注意边界R 指针移动到字符串边界时要停止得到数据 2 个数 R - L 3 将其拼接到字符串中得到 2132
1 1 2 2 2 L R 知道如何描述以及一开始描述的数据为 1便知道描述 n -1 次后得到的数据为多少