LeetCode刷题实战481:神奇字符串
示例
示例 1:
输入:n = 6
输出:3
解释:神奇字符串 s 的前 6 个元素是 “122112”,它包含三个 1,因此返回 3 。
示例 2:
输入:n = 1
输出:1
解题
分为两个字符串:1表示原始字符串,2表示分组后的字符串
结合第一个字符串向第二个字符串中添加元素
结合第二个字符串向第一个字符串中添加元素。
class Solution {
public int magicalString(int n) {
if(n <= 0)
return 0;
if(n <= 3)
return 1;
StringBuilder base = new StringBuilder();
StringBuilder sub = new StringBuilder();
base.append("122");
sub.append("12");
int index = 0;
int temp = 0;
int counts = 1;
while (base.length() < n){
index = sub.length();
temp = base.charAt(index)-'0';
sub.append(temp);
if(temp==2){
temp = base.charAt(base.length()-1)-'0';
if(temp == 2){
base.append("11");
if(base.length() <= n)
counts += 2;
else
counts += 1;
}else {
base.append("22");
}
}else {//temp == 1
temp = base.charAt(base.length()-1)-'0';
if(temp == 2){
base.append("1");
counts += 1;
}else {
base.append("2");
}
}
}
return counts;
}
}