机试题目-day2

发布时间 2023-11-22 17:57:48作者: 小小卡拉咪

1.回文串问题

把字符串中的大写都改为小写,并且把不是字母的字符删掉组成新的字符串

原思路:都在原地址进行操作,此时会有各种问题

现思路:组成一个新的字符串,用数组进行存储。问题又来了,如何知道新数组的长度呢?在编译的时候,无法你传进来的大小,因此要使用malloc申请内存。

bool isPalindrome(char* s) {
int length=strlen(s);
int j=0;
char* newstr=(char*)malloc(sizeof(char)*length);
for(int i=0;i<length;i++)
{
    if((s[i]>='a')&&(s[i]<='z'))
    {
        newstr[j]=s[i]; j++;
    }
    else if((s[i]>='0')&&(s[i]<='9'))
    {
        newstr[j]=s[i]; j++;
    }
    else if((s[i]>='A')&&(s[i]<='Z'))
    {
        newstr[j]=s[i]|32; j++;
    }
}
newstr[j]='\0';
int newlength=strlen(newstr);
for(int m=0;m<j;m++)
    {if(newstr[m]!=newstr[j-m-1]) return false;}
    return true;  
}