LeetCode 520. Detect Capital
problem:
Given a word, you need to judge whether the usage of capitals in it is right or not.
We define the usage of capitals in a word to be right when one of the following cases holds:
- All letters in this word are capitals, like "USA".
- All letters in this word are not capitals, like "leetcode".
- Only the first letter in this word is capital if it has more than one letter, like "Google".
Example 1:
Input: "USA" Output: True
Example 2:
Input: "FlaG" Output: False
Note: The input will be a non-empty word consisting of uppercase and lowercase latin letters.
first:
class Solution { public boolean detectCapitalUse(String word) { char[] charArray = word.toCharArray(); if(Character.isLowerCase(charArray[0])){ for(char c : charArray){ if(Character.isUpperCase(c)){ return false; } } return true; } if(Character.isUpperCase(charArray[0])&&Character.isUpperCase(charArray[1])){ for(char c : charArray){ if(Character.isLowerCase(c)){ return false; } } return true; } if(Character.isUpperCase(charArray[0])&&Character.isLowerCase(charArray[1])){ for(int i=2;i<charArray.length;i++){ if(Character.isUpperCase(charArray[i])){ return false; } } return true; } return false; } }
result:
Submission Result: Runtime Error Runtime Error Message: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at Solution.detectCapitalUse(Solution.java:13) at __DriverSolution__.__helper__(__Driver__.java:4) at __Driver__.main(__Driver__.java:48) Last executed input: "G"
second:
class Solution { public boolean detectCapitalUse(String word) { char[] charArray = word.toCharArray(); if(charArray.length==1){ return true; } if(Character.isLowerCase(charArray[0])){ for(char c : charArray){ if(Character.isUpperCase(c)){ return false; } } return true; } if(Character.isUpperCase(charArray[0])&&Character.isUpperCase(charArray[1])){ for(char c : charArray){ if(Character.isLowerCase(c)){ return false; } } return true; } if(Character.isUpperCase(charArray[0])&&Character.isLowerCase(charArray[1])){ for(int i=2;i<charArray.length;i++){ if(Character.isUpperCase(charArray[i])){ return false; } } return true; } return false; } }
result:
discussion里得票最高的写法:
public class Solution { public boolean detectCapitalUse(String word) { int cnt = 0; for(char c: word.toCharArray()) if('Z' - c >= 0) cnt++; return ((cnt==0 || cnt==word.length()) || (cnt==1 && 'Z' - word.charAt(0)>=0)); } }
result:
third try:
class Solution { public boolean detectCapitalUse(String word) { char[] charArray = word.toCharArray(); if(charArray.length==1){ return true; } if(!(0<='Z'-charArray[0])){ for(char c : charArray){ if(0<='Z'-c){ return false; } } return true; } if(0<='Z'-charArray[0]&&0<='Z'-charArray[1]){ for(char c : charArray){ if(!(0<='Z'-c)){ return false; } } return true; } if(0<='Z'-charArray[0]&&!(0<='Z'-charArray[1])){ for(int i=2;i<charArray.length;i++){ if(0<='Z'-charArray[i]){ return false; } } return true; } return false; } }
result:
Conclusion:
可见Character.isUpperCase(char c)方法效率较低。其实现留待后续查看。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?