思路
- 首先要统计字符串中的数字,而且不可从0开始
- 数字是跳过的字符数量
(1)跳超出范围不可
(2)跳了之后字母对不上不可 - 必须最后的数值与字符串长度一致
代码
bool validWordAbbreviation(char * word, char * abbr){
int lw = strlen(word),la = strlen(abbr);
printf("lw = %d la = %d \n",lw,la);
int i=0,j=0,temp;
while (i<la)
{
if(j>lw)
{
return false;
}
if(isalpha(abbr[i])){//字母
if(abbr[i]!=word[j]){
return false;
}
else i++;j++;
}
else {//数字
if(abbr[i]=='0'){
return false;
}
else {
temp = 0;
while (!isalpha(abbr[i])&&i<la)
{
temp = temp*10 + abbr[i] - '0';
i++;
}
j = j + temp;
}
}
}
if(j!=lw){
return false;
}
return true;
}