学打字

题目描述
									

小明同学刚刚学习打字,现在老师叫他输入一个英文字符串。小明发现,这个英文字符串只由大写和小写的英文字母构成。小明同学只会使用Caps Lock键来切换大小写输入。

最开始,大写锁定处于关闭状态,小明的电脑只能输入小写英文字母。当大写锁定关闭时,按一下Caps Lock键可以打开大写锁定,之后只能输入大写字母;当大写锁定打开时,按一下Caps Lock键可以关闭大写锁定,之后只能输入小写字母。

现在小明想知道输入这个字符串最少需要按键多少次。



输入

输入只有一行,一个字符串,字符串中只有大写字母和小写字母,字符串长度不超过100000。


样例输入

aAAbB

输出

输出一行,最少的按键次数。


样例输出

8

表现方式一:
flag1表示前一个字符的状态,true表示小写,false表示大写。
flag2记录现在这个字符的状态,true表示小写,false表示大写。
如果flag1!=flag2,则count++。
import java.util.*;
class Main1_fenghuo1 
{
public static void main(String[] args) 
{
Scanner sc=new Scanner(System.in);
String s;
int l=0;
int count=0;
boolean flag1=true;
boolean flag2=true;
while(sc.hasNext())
{
s=sc.nextLine();
l=s.length();
for(int i=0;i {
char ch=s.charAt(i);
if(ch>='a'&&ch<='z')
flag2=true;
else
flag2=false;
if(flag2!=flag1)
{
count++;
flag1=flag2;
}
}
System.out.println(l+count);
}
}
}


表现方式二:
flag记录前一个单词状态,true表示为大写,false为小写。
如果ch是大写而flag=false,则count++,且将flag置为true;
如果ch是小写而flag=true;则count++, 且将flag置为false
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String line = sc.nextLine();
int ans = line.length();
boolean flag = false;

for (Character ch : line.toCharArray()) {
if (ch.isUpperCase(ch) && !flag) {
ans++;
flag = true;
} else if(ch.isLowerCase(ch) && flag) {
ans++;
flag = false;
}
}

System.out.println(ans);

}
}


}

你可能感兴趣的:(在线编程题目)