字符串-Leetcode-520

0️⃣python数据结构与算法学习路线
学习内容:

  • 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等…
  • 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等…

题目:

给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。

输入输出:

输入: “USA”
输出: True

解题思路:

首先判断首字母是不是大写
首字母大写:其他字母全为小写或全为大写,返回Ture
首字母小写:其他字母全为小写,返回Ture
其余返回False

算法实现:

自己的思路:

class Solution(object):
    def detectCapitalUse(self, word):
        if len(word)<2:
            return True
        elif 96 < ord(word[0]): # 首字母小写
            for i in word[1:]:
                if ord(i) < 97:# 其他字母大写
                    return False
        elif ord(word[0])< 97:# 首字母大写
            if 96 < ord(word[1]):# 第二个字母小写
                for i in word[2:]:
                    if ord(i) < 97:# 其他字母大写
                        return False
            else:# 第二个字母大写
                for i in word[2:]:
                    if 96 < ord(i):# 其他字母小写
                        return False
        return True         

题解中其他人做法:

class Solution:
    def detectCapitalUse(self, word: str) -> bool:
        return word.islower() or word.isupper() or word.istitle()

出现问题:

  1. 读取字符串中的每个字符(和列表方法一样)
# 字符串转换成列表
words = []
for word in str:
     words +=word 
print('words = ',words)
  1. 字符和 ASCII 之间相互转换
#ascii转字符串
a_ascii = 97
b = chr(a_ascii)

#字符串转ascii
abc = 'a'
x = ord(abc)

常见ASCII码值:

  • 空格的ASCII码值为32
  • 数字0到9的ASCII码值分别为48到57
  • 大写字母“A”到“Z”的ASCII码值分别为65 到 90
  • 小写字母“a”到“z”的ASCII码值分别为97 到 122。
class Solution:
    def detectCapitalUse(self, word: str) -> bool:
        return word.islower() or word.isupper() or word.istitle()
        # 运用字符串的方法str.islower()可以检验字符串是否全为小写,如果小写则返回True
        # str.isupper()可以检验字符串是否全为大写,如果大写则返回True
        """
        str.istitle()用来判断字符串首字母是否为大写,
        如果字符串只有一个单词且首字母为大写,返回结果True,
        如果字符串含有多个单词且每个单词首字母为大写,返回结果False
        """
  1. word[2:]和word[2:-1]输出结果不一样?为什么?
  2. 只要是有循环的题都要注意字符串的长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪里摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值