leetcode 481. Magical String
来源:互联网 发布:新疆网络空间安全协会 编辑:程序博客网 时间:2024/05/21 11:01
A magical string S consists of only '1' and '2' and obeys the following rules:
The string S is magical because concatenating(串联) the number of contiguous occurrences(连续出现次数) of characters '1' and '2' generates the string Sitself.
The first few elements of string S is the following: S = "1221121221221121122……"
If we group the consecutive(连续的) '1's and '2's in S, it will be:
1 22 11 2 1 22 1 22 11 2 11 22 ......
and the occurrences of '1's or '2's in each group are:
1 2 2 1 1 2 1 2 2 1 2 2 ......
You can see that the occurrence sequence above is the S itself.
Given an integer N as input, return the number of '1's in the first N number in the magical string S.
Note: N will not exceed 100,000.
Example 1:
Input: 6Output: 3Explanation: The first 6 elements of magical string S is "12211" and it contains three 1's, so return 3.
我本来以为这串数字,之后会有循环,可是写了半天发现没有循环:
num:122112122122112112212112122112112122122112122121121122
occu1 2 2 11 2 1 2 2 1 2 2 11 2 11 2 2 1 2 11 2 1 2 2 11 2 11 2 1 2 2
package leetcode;public class Magical_String_481 {public int magicalString(int n) {if(n==0){return 0;}if(n==1){return 1;}if(n==2){return 1;}if(n==3){return 1;}int[] string=new int[n];int result=0;boolean isOne=true;int pointer=3;int occurrencePointer=2;string[0]=1;string[1]=2;string[2]=2;while(pointer<n){int occurrence=string[occurrencePointer];if(isOne){while(pointer<n&&occurrence>0){string[pointer]=1;pointer++;occurrence--;}isOne=false;}else{while(pointer<n&&occurrence>0){string[pointer]=2;pointer++;occurrence--;}isOne=true;}occurrencePointer++;}for(int i=0;i<n;i++){if(string[i]==1){result+=1;}}return result;}public static void main(String[] args) {// TODO Auto-generated method stubMagical_String_481 m=new Magical_String_481();System.out.println(m.magicalString(7));}}大神的解法与我类似,但是在1和2的变换使用 num = num ^ 3
因为
1 001 ^ 011 = 010 = 2
2 010 ^ 011 = 001 = 1
- LeetCode 481. Magical String
- [leetcode] 481. Magical String
- LeetCode 481. Magical String
- [leetcode]481. Magical String
- [LeetCode]481. Magical String
- leetcode 481. magical string
- leetcode 481. Magical String
- 【LeetCode】481. Magical String
- LeetCode笔记:481. Magical String
- leetcode 481. Magical String python
- leetcode oj java 481. Magical String
- [Leetcode] 481. Magical String 解题报告
- leetcode 481. Magical String 神奇字符串
- [leetcode-481]Magical String
- LeetCode题解:Magical String
- 481. Magical String**
- 481. Magical String
- 481. Magical String
- javascript中Get/Set访问器
- 四季星空
- 用micropython的基本操作
- 深度学习系列之各激活函数对比
- 嵌入式每日学习心得2017.07.07
- leetcode 481. Magical String
- bzoj1874: [BeiJing2009 WinterCamp]取石子游戏
- 06_BootScrap——CRUD(动态页面下篇)方法一
- 处理概括关系
- 2017.07.05【NOIP提高组】模拟赛B组小结
- 对编程语言的认识
- 1010. 一元多项式求导 (25)
- Day24-Ajax
- MPEG