38. Count and Say
程序员文章站
2022-07-15 12:29:44
...
题目描述(简单难度)
难在了题目是什么意思呢?
初始值第一行是 1。
第二行读第一行,1 个 1,去掉个字,所以第二行就是 11。
第三行读第二行,2 个 1,去掉个字,所以第三行就是 21。
第四行读第三行,1 个 2,1 个 1,去掉所有个字,所以第四行就是 1211。
第五行读第四行,1 个 1,1 个 2,2 个 1,去掉所有个字,所以第五航就是 111221。
第六行读第五行,3 个 1,2 个 2,1 个 1,去掉所以个字,所以第六行就是 312211。
然后题目要求输入 1 - 30 的任意行数,输出该行是啥。
解法
两两字符之间依次进行对比,如果相邻字符相等,那么count+1;否则把后面字符赋值给前面字符,重复之前的操作。
public static String countAndSay(int n) {
String pre="1";
for(int i=1;i<n;i++) {
char first=pre.charAt(0);
StringBuilder temp=new StringBuilder();
int count=1;
for(int j=1;j<pre.length();j++) {
char second=pre.charAt(j);
if(first==second) {
count++;
}else {
temp.append(count).append(first);
count=1;
first=second;
}
}
temp.append(count).append(first);
pre=temp.toString();
}
return pre;
}
public static void main(String args[]) {
int n=5;
String ans=countAndSay(n);
System.out.println(ans);
}
}
推荐阅读
-
sql server中Select count(*)和Count(1)的区别和执行方式
-
Select count(*)、Count(1)和Count(列)的区别及执行方式
-
Python字符串处理之count()方法的使用
-
mysql count详解及函数实例代码
-
Python中List.count()方法的使用教程
-
SQL优化之针对count、表的连接顺序、条件顺序、in及exist的优化
-
select count()和select count(1)的区别和执行方式讲解
-
MSSQL一个关于Count函数的小实例
-
php计算数组相同值出现次数的代码(array_count_values)
-
将count(*)值写入另一个表中的方法