leetcode每日刷题计划-简单篇day9

时间:2022-05-24 20:52:53

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==) return "";
else if(n==) return "";
else if(n==) return "";
else if(n==) return "";
else if(n==) return "";
char a[];
string s="";
int len=s.length();
int count=;
int sz=;
for(int i=;i<=n;i++)
{
len=s.length();
count=;
sz=;
char now=s[];
for(int j=;j<len;j++)
{
if(s[j]==now)
{
count++;
}
else
{
a[sz++]=count+;
a[sz++]=now;
count=;
now=s[j];
}
}
a[sz++]=count+;
a[sz++]=now;
string ans(a,,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-;
int lenn=n-;
int lenm=m-;
while(len>= && lenn>= && lenm>=)
{
if(nums2[lenn]>nums1[lenm])
nums1[len--]=nums2[lenn--];
else
nums1[len--]=nums1[lenm--];
}
while(lenn>=)
nums1[len--]=nums2[lenn--];
while(lenm>=)
nums1[len--]=nums1[lenm--];
}
};