我在竞争激烈的编码网站上做这个练习题。我们有一个场景,我们有一个智能浏览器,我们不需要输入“www”。而且没有元音。浏览器自己输入这两件事。
我正在编写一个程序,显示智能网址中的字符数与完整网址的比率。即。例如,www.google.com
的智能网址为ggl.com
。因此,节目的显示将是7/14
。我这样做了,但我的显示是6/14
。即少一个。它适用于每个测试用例。我不知道问题出在哪里
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();// no of testcases!
while(t > 0)
{
String st = sc.next();
int count = st.length();
count = count-4;
int count1 = st.length();
for(char da:st.toCharArray())
{
switch(da)
{
case 'a':
count = count -1;
break;
case 'e':
count = count -1;
break;
case 'i':
count = count-1;
break;
case 'o':
count = count -1;//System.out.println(da);
break;
case 'u':
count = count -1;
break;
}
}
System.out.print((count ) +"/" +count1) ;
System.out.println();
t--;
}
答案 0 :(得分:10)
ggl.com
仍然包含元音,因此您的循环会减少count
的{{1}},而您的程序将返回6而不是7。
请注意,通常,网址的域名可以包含不同数量的元音 - 例如,o
,com
和gov
都有1,net
有2,edu
有0.您的代码应该忽略上一个fr
后面的元音。
这可以解决您的问题:
.
这假定只有最后一个 ....
String st = sc.next();
int count = st.length();
count = count-4;
int count1 = st.length();
st = st.substring(0,st.lastIndexOf('.')); // get rid of the domain name
for(char da:st.toCharArray())
...
之后的元音应该保留在计数中。例如,如果您希望在.
域中同时保留.co.il
和o
,则必须更改逻辑。