机试题目-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的区域进行取值操作,可以移动指针
浙公网安备 33010602011771号