力扣每日一题 6/23 字符串/模拟
创始人
2025-01-16 07:35:35
0次
  • 博客主页:誓则盟约
  • 系列专栏:IT竞赛 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍ 

520.检测大写字母【简单】

题目:

我们定义,在以下情况时,单词的大写用法是正确的:

  • 全部字母都是大写,比如 "USA" 。
  • 单词中所有字母都不是大写,比如 "leetcode" 。
  • 如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。

给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:

输入:word = "USA" 输出:true 

示例 2:

输入:word = "FlaG" 输出:false 

提示:

  • 1 <= word.length <= 100
  • word 由小写和大写英文字母组成

分析问题:

        两个思路,第一个思路是模拟,模拟题目判断条件,走三次循环,时间复杂度相比于其他方法有点高,但是通俗易懂,最容易想到这种方法。具体思路就是写三个判断函数,每一个函数对应每一个判断条件,然后最后用 or 将他们连接起来,只要有一个正确则返回True,全部错误返回False。

        第二个思路,一遍过。只需要进行一次循环,一次循环里面同时判断三个条件,这样可以大大节约时间。

代码实现:

思路1:
class Solution:     def detectCapitalUse(self, word: str) -> bool:         def pan(s:str):             for j in s:                 if j.islower(): return False             else: return True         def le(s:str):             for i in s:                 if i.isupper():return False             return True         def lp(s:str):             if len(s)>1 and s[0].isupper():                 for k in s[1:]:                     if k.isupper(): return False                 return True             return False         if pan(word) or le(word) or lp(word): return True         return False

 

思路2: 
class Solution:     def detectCapitalUse(self, word: str) -> bool:         n = len(word)         if len(word)>=2:             if word[0].isupper():                 cnt = 0                 for char in word:                     if char.isupper():                         cnt += 1                 if cnt == n or cnt == 1:                     return True             elif word[0].islower():                 cnt = 0                 for char in word:                     if char.islower():                         cnt += 1                 if cnt == n:                     return True         else:             return True         return False


 

总结:

        两段代码目标一样,第一段代码侧重于解题时间短,很容易想出来;第二段代码侧重于时间复杂度低,代码高效,也不是很难想出来。两段代码各有千秋。

思路1详解:

方法内部定义了三个辅助函数:

  • pan 函数用于判断字符串中的所有字符是否均为大写。
  • le 函数用于判断字符串中的所有字符是否均为小写。
  • lp 函数用于判断字符串首字母大写,其余字母均为小写的情况。

        最后,通过判断输入的字符串 word 是否符合上述三种规则中的任意一种,如果符合则返回 True,否则返回 False 。

思路2详解:

首先,获取字符串 word 的长度 n ,并判断长度是否大于等于 2 。

如果长度大于等于 2 且首字符大写:

  • 计算字符串中大写字符的个数 cnt 。
  • 若 cnt 等于字符串长度(全大写)或 cnt 等于 1(首字母大写),则返回 True 。

如果长度大于等于 2 且首字符小写:

  • 计算字符串中小写字符的个数 cnt 。
  • 若 cnt 等于字符串长度(全小写),则返回 True 。

如果字符串长度小于 2 ,则直接返回 True 。

如果以上条件都不满足,返回 False 


考点:

  1. 对字符串的遍历操作,熟悉如何逐个处理字符串中的字符。
  2. 字符串方法的运用,如 isupper() 和 islower() 来判断字符的大小写。
  3. 条件判断和逻辑推理,根据不同的情况制定判断规则。

收获:

  1. 提升了对字符串处理问题的解决能力,学会根据具体需求分析和设计算法。
  2. 增强了逻辑思维,能够清晰地考虑各种可能的情况,并通过代码准确实现。
  3. 更加熟悉函数的定义和使用,将复杂问题分解为小的函数模块,提高代码的可读性和可维护性。
  4. 对边界情况的处理有了更深入的理解,如字符串长度较短的情况。

 


 “黄沙百战穿金甲,不破楼兰终不还。”——《从军行七首·其四》

相关内容

热门资讯

玩家爆料开挂app!丹东约战麻... 玩家爆料开挂app!丹东约战麻将多功能开挂app,丹东约战麻将果然真的有开挂app1、下载好丹东约战...
终于清楚辅助软件!丰城棋牌多功... 终于清楚辅助软件!丰城棋牌多功能辅助软件,丰城棋牌本来是真的有辅助软件1、起透看视 丰城棋牌辅助软件...
重大消息透视器方法!科尔沁麻将... 重大消息透视器方法!科尔沁麻将多功能透视器方法,科尔沁麻将本来是有透视器方法科尔沁麻将脚本下载中分为...
分享个大家辅助方法!天津麻将多... 分享个大家辅助方法!天津麻将多功能辅助方法,天津麻将竟然是真的有辅助方法1、很好的工具软件,可以解锁...
带你了解外挂攻略!逍遥皖北棋牌... 带你了解外挂攻略!逍遥皖北棋牌多功能外挂攻略,逍遥皖北棋牌总是是有外挂攻略1、在逍遥皖北棋牌插件功能...
热门推荐透视挂攻略!悠乐汇多功... 热门推荐透视挂攻略!悠乐汇多功能透视挂攻略,悠乐汇切实真的有透视挂攻略;1、全新机制【悠乐汇ai辅助...
推荐一款辅助方法!科尔沁麻将多... 推荐一款辅助方法!科尔沁麻将多功能辅助方法,科尔沁麻将其实真的有辅助方法1、不需要AI权限,帮助你快...
重大来袭开挂攻略!一乐浙江多功... 重大来袭开挂攻略!一乐浙江多功能开挂攻略,一乐浙江一贯是真的有开挂攻略1、让任何用户在无需一乐浙江安...
详细说明作弊器技巧!启东麻将多... 详细说明作弊器技巧!启东麻将多功能作弊器技巧,启东麻将一贯存在有作弊器技巧1、下载好启东麻将透视辅助...
玩家必看科普辅助插件!闲来互娱... 玩家必看科普辅助插件!闲来互娱多功能辅助插件,闲来互娱一贯有辅助插件1、很好的工具软件,可以解锁游戏...