leetcode38.外观数列(循环匹配)

package newleetcode;
//未完全理解
public class LeetCode38 {
public String viewDate(int n){
//初始化str
String str="1";
//通过循环修改数组
for(int i=2;i<=n;i++){
//每次循环初始化builder
StringBuilder builder=new StringBuilder();
//将初始值赋给pre
char pre= str.charAt(0);
//初始化count
int count=1;
/**
* 依据for循环依次描述数据,相同时count1
* 不相同时即更新数据
*/
for(int j=1;j<str.length();j++){
//逐位比较
char c=str.charAt(j);
//若相等则count1
if(c==pre){
count++;
}else {
//若不等则先录入数据表示存在【countpre
builder.append(count).append(pre);
//被描述值更新
pre=c;
//count初始化
count=1;
}
}
//录入最后一位(pre)的描述,若存在多个pre,有count记录【描述数据最后一位】
builder.append(count).append(pre);
str=builder.toString();
}
return str;
}

public static void main(String args[]){
LeetCode38 leetCode38=new LeetCode38();
System.out.println(leetCode38.viewDate(1));
System.out.println(leetCode38.viewDate(2));
System.out.println(leetCode38.viewDate(3));
System.out.println(leetCode38.viewDate(4));
System.out.println(leetCode38.viewDate(5));
}
}
/**数组123456,是从1开始比较,不是6,最里面的是里层,最外面的是外层,从里至外判断
* leetcode提交代码
* class Solution {
* public String countAndSay(int n) {
* //初始化str
* String str="1";
* //通过循环修改数组
* for(int i=2;i<=n;i++){
* //每次循环初始化builder
* StringBuilder builder=new StringBuilder();
* //将初始值赋给pre
* char pre= str.charAt(0);
* //初始化count
* int count=1;
*
* //依据for循环依次描述数据,相同时count1
* //不相同时即更新数据
* for(int j=1;j<str.length();j++){
* //逐位比较
* char c=str.charAt(j);
* //若相等则count1
* if(c==pre){
* count++;
* }else {
* //若不等则先录入数据表示存在【countpre
* builder.append(count).append(pre);
* //被描述值更新
* pre=c;
* //count初始化
* count=1;
* }
* }
* //录入最后一位(pre)的描述,若存在多个pre,有count记录【描述数据最后一位】
* builder.append(count).append(pre);
* str=builder.toString();
* }
* return str;
* }
* }
*/
原文地址:https://www.cnblogs.com/shudaixiongbokeyuan/p/13412951.html