Num 38 报数 Count and Say
题意读起来比较费劲。。看懂了题还是不难的
注意最后的长度是sz的长度,开始写错写的len
在下次计算的时候len要更新下
说明
直接让char和int进行转换的过程中,int a=1,转成char是ascii为1的一个东西,要a+48,如果是char b='1',这时候转换成a是49
两者之间的转化完全是a的数值对应就是字符的ascii
还有就是char数组可以直接赋值给string
char a[100] ;string s=(a,0,len);len是长度哦,0是起始位置

class Solution { public: string countAndSay(int n) { if(n==1) return "1"; else if(n==2) return "11"; else if(n==3) return "21"; else if(n==4) return "1211"; else if(n==5) return "111221"; char a[10000]; string s="111221"; int len=s.length(); int count=0; int sz=0; for(int i=6;i<=n;i++) { len=s.length(); count=0; sz=0; char now=s[0]; for(int j=0;j<len;j++) { if(s[j]==now) { count++; } else { a[sz++]=count+48; a[sz++]=now; count=1; now=s[j]; } } a[sz++]=count+48; a[sz++]=now; string ans(a,0,sz); s=ans; } return s; } };
Num 88 合并两个有序数组 Merge Sorted Array
注意一下实际读取的时候是0-len-1,len赋值修改一下比较好
然后,修改以后是大于等于0;while(len),if(len)这种判定条件都是大于0奥

class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int len=m+n-1; int lenn=n-1; int lenm=m-1; while(len>=0 && lenn>=0 && lenm>=0) { if(nums2[lenn]>nums1[lenm]) nums1[len--]=nums2[lenn--]; else nums1[len--]=nums1[lenm--]; } while(lenn>=0) nums1[len--]=nums2[lenn--]; while(lenm>=0) nums1[len--]=nums1[lenm--]; } };