给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。
很简单的一道题目,但是我这个代码绝对是可以完善的
class Solution {
public boolean detectCapitalUse(String word) {
if(word.length() == 1 || word.length() == 0){
return true;
}
char []tem = word.toCharArray();
if(Character.isUpperCase(tem[0])){
//以大写开头
if(word.length() == 2){
return true;
}else {
//第二个字母是大写,那么后面都必须是大写
if(Character.isUpperCase(tem[1])){
for (int i = 2; i < tem.length; i++) {
char c = tem[i];
if(!Character.isUpperCase(c)){
return false;
}
}
return true;
}else {
//如果第二个字母是小写那么后面都是小写
for (int i = 2; i < tem.length; i++) {
char c = tem[i];
if(Character.isUpperCase(c)){
return false;
}
}
return true;
}
}
}else {
//以小写开头
for (char c : tem) {
if(Character.isUpperCase(c)){
return false;
}
}
return true;
}
}
}
思考:可以这么来,首先是一个for循环转成对应的int数组,根据数字来判断是大写还是小写,但是这样更加复杂了;
class Solution {
public boolean detectCapitalUse(String word) {
boolean flag=true;
if(word.charAt(0)<=122&&word.charAt(0)>=97){
//flag=true;
for(int i=1;i<word.length();i++){
if(word.charAt(i)>122||word.charAt(i)<97)
{
flag=false;
break;
}
}
}
else if(word.length()!=1){
if(word.charAt(1)<=122&&word.charAt(1)>=97)
for(int i=1;i<word.length();i++){
if(word.charAt(i)>122||word.charAt(i)<97)
{
flag=false;
break;
}
}
else
for(int i=1;i<word.length();i++){
if(word.charAt(i)>90||word.charAt(i)<65)
{
flag=false;
break;
}
}
}
//else if(word.charAt(0)<=90&&word.charAt(0)>=65)
return flag;
}
}