OD机考牛客题库 1-10 java

华为机试_在线编程_牛客网

1.字符串最后一个单词的长度

描述

对于给定的若干个单词组成的句子,每个单词均由大小写字母混合构成,单词间使用单个空格分隔。输出最后一个单词的长度。

输入描述:

在一行上输入若干个字符串,每个字符串代表一个单词,组成给定的句子。
除此之外,保证每个单词非空,由大小写字母混合构成,且总字符长度不超过 103103 。

输出描述:

在一行上输出一个整数,代表最后一个单词的长度。

示例1

输入:

HelloNowcoder

复制输出:

13

复制说明:

在这个样例中,最后一个单词是 "HelloNowcoder""HelloNowcoder" ,长度为 1313 。

示例2

输入:

A B C D

复制输出:

1
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String line = in.nextLine();//hasNext 判断是否还有内容 用于无长度输入
        //nextLine 获取一行String
        String[] words = line.split(" "); //以空格分隔
        String last = words[words.length - 1 ];
        System.out.println(last.length());
    }
}

2.HJ2 计算某字符出现次数

描述

对于给定的由大小写字母、数字和空格混合构成的字符串 s ,统计字符 c 在其中出现的次数。具体来说:
∙ ∙若 c 为大写或者小写字母,统计其大小写形态出现的次数和;
∙ ∙若 c 为数字,统计其出现的次数。
保证字符 c 仅为大小写字母或数字。

输入描述:

第一行输入一个长度 1≦length(s)≦1031≦length(s)≦103 ,由大小写字母、数字和空格混合构成的字符串 s 。保证首尾不为空格。
第二行输入一个字符 c ,代表需要统计的字符。

输出描述:

在一行上输出一个整数,代表字符 c 在字符串 s 中出现的次数。

示例1

输入:

HELLONowcoder123
o

复制输出:

3

复制说明:

由于 o 为小写字母,因此统计其小写形态出现的次数和,即 33 。

示例2

输入:

H E L L O Nowcoder123
1

复制输出:

1
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String a = in.nextLine();//临时
        char c = 0;
        if(a.trim().isEmpty()){//判断第二行是否为空格
            System.out.println("error");
            return;
        }
        c = a.charAt(0);
        int count = 0;
        if(Character.isLetter(c)){//判断字母
            for(char ch : s.toCharArray()){
                if(Character.toLowerCase(c) == Character.toLowerCase(ch)) count++;//转小写统计字母数
            }
            System.out.println(count);
            return;
        }
        if(Character.isDigit(c)){//判断数字
            for(char ch : s.toCharArray()){
                if(c == ch) count++;
            }
            System.out.println(count);
            return;
        }
        System.out.println("error");
    }
}

Tips

hasNext()
用途:检查是否有更多的“单词”或“部分”可以读取。
怎么工作的:它会跳过空格、换行符等空白字符,找到下一个完整的“单词”或“部分”。这里的“单词”是指由空格或其他分隔符分开的文本片段。
适用场景:当你想逐个读取输入中的单词或特定分隔符分隔的部分时使用。比如,从一个句子中逐个读出单词。

hasNextLine()
用途:检查是否还有完整的行可以读取。
怎么工作的:它根据换行符(按下回车键产生的)来判断一行的结束。每次调用都会读取直到遇到换行符为止的所有内容作为一个整体。

适用场景:当你想逐行读取输入时使用。例如,从一篇文章或者用户输入的多行文本中一行一行地读取内容。

简单例子
假设输入是:
Hello World
How are you?

使用 hasNext() 和 next(),你会依次得到 "Hello" 和 "World" 作为两个独立的读取结果,然后是 "How", "are", "you?"。
使用 hasNextLine() 和 nextLine(),你会首先得到 "Hello World" 作为一个整体,然后是 "How are you?",每个都是单独的一次读取结果。

 每次调用 nextLine() 都会消耗掉输入流中的当前行,并将扫描器的内部指针移动到下一行。因此,随着每一行被读取和处理,程序能够继续检查并处理后续的行,直到所有输入都被读取完毕。当没有更多的行可供读取时(比如达到文件末尾或输入流关闭),hasNextLine() 将返回 false,循环结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinhai1114

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值