每日写题分享--转换成小写字母//双指针

本文介绍了一种利用ASCII编码特性,通过按位或操作将大写字母转换为小写的高效算法,并提供了两种代码实现方式。同时,提到了使用编程语言内置API的便捷方法。

题目描述:

 

 题目链接戳此

解题思路:

根据ASCII表可以知道,大写的字母在65到90之间,小写字母在97到122之间,大小写字母之间打间隔为(97-65)= 32,刚好是32位,本题我们可以将字符是大写字母的对应到ASCII编码表中直接加上32,这里用 按位或 相加不用进位,速度比直接用+号更快,这样就都是小写字母了。

代码实现如下:

class Solution {

    public String toLowerCase(String s) {
        StringBuilder str = new StringBuilder();
        for (int i = 0;i < s.length();i++) {
            char ch = s.charAt(i);
            if (ch <= 'Z' && ch >= 'A') {
                ch |= 32;
            }
            str.append(ch);
        }
        return str.toString();
    }
}

ASCII表:

或者也可以投机取巧直接用语言自带的API。

 

class Solution {
    public String toLowerCase(String s) {
        return s.toLowerCase();
    }
}

在C语言中,实现大字母转换为小写字母有以下两种常见方法: ### 利用ASCII码差值转换 由于在ASCII码表中,大字母和小写字母相差32,所以可以通过给大字母对应的ASCII码值加上32来得到其对应的小写字母。以下是示例代码: ```c #include <stdio.h> #include <stdlib.h> int main(void) { char x, y; printf("请输入一个大字母\n"); scanf("%c", &x); y = x + 32; // 因为大小写字母ASCII码差32个数字 printf("%c的小形式是%c\n", x, y); system("pause"); return 0; } ``` 在这段代码中,通过`scanf`函数获取用户输入的大字母,存储在变量`x`中,然后将`x`的值加上32赋值给`y`,最后输出对应的小写字母[^4]。 ### 使用标准库函数转换 C语言的`<ctype.h>`头文件中提供了`tolower`函数,可以直接将大字母转换为小写字母。以下是示例代码: ```c #include <stdio.h> #include <ctype.h> void toLowerCase(char *str) { // 遍历字符串直到遇到字符串结束符'\0' while (*str) { // 如果当前字符是大字母 if (*str >= 'A' && *str <= 'Z') { // 则将其转换为小写字母 *str = tolower(*str); } // 移动到下一个字符 str++; } } int main() { char str[] = "HELLO, WORLD! This is a test."; printf("Original: %s\n", str); toLowerCase(str); // 调用函数转换大字母为小 printf("Lowercase: %s\n", str); // 输出转换后的字符串 return 0; } ``` 在上述代码中,定义了`toLowerCase`函数,该函数接收一个字符串指针作为参数,遍历字符串中的每个字符,若为大字母,则使用`tolower`函数将其转换为小写字母。在`main`函数中,调用该函数对字符串进行转换并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值