机试题目-day1

字符串:

例题1:https://leetcode-cn.com/problems/to-lower-case/

题目为输入一个字符串,将其中的大写字符都转换为小写

tips1:字符串的输入与输出,都要靠使用字符类型的数据和字符类型的指针

tips2:转换相关运算

大小写互相转换需要:异或(相同的变0,不同的变1)

小写转换为大写需要:&

大写转换为小写需要:|

tips3:ASSIC码的规则

0-47为符号

48-57为数字

58-64为符号

65-90为大写

91-96为字符

97-122为小写

程序:

char* toLowerCase(char* s) {
for(int i=0;s[i]!=NULL;i++){
if((s[i]>64)&&(s[i]<91)){
s[i]=s[i]|32;}
}
return s;

}

问题:如果考试时后忘记ASSIC码表,该怎么办呢

char* toLowerCase(char* s) {
for(int i=0;s[i]!=NULL;i++){
if((s[i]>='A')&&(s[i]<=Z)){
s[i]=s[i]|32;}
}
return s;

}

但是该程序执行时间比较长

例题2:https://leetcode-cn.com/problems/length-of-last-word/

 

int lengthOfLastWord(char* s) {
char* p=s;
int count=0;
while(*(s+1)!=0) s++;
while(*s==' ') s--;
while (*s!=' ')
{count++;
s--;
if(*s==' '||(s+1)==p) break;}
return count;
}

阴影处应该删除

从后往前遍历,此处应该注意的是不要对没有malloc的区域进行取值操作,可以移动指针

 

posted @ 2023-11-17 17:20  小小卡拉咪  阅读(18)  评论(0)    收藏  举报