刷题 牛客

  1. 描述
    计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
    输入描述:
    输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。


输入:
hello nowcoder
复制
输出:
8
复制
说明:
最后一个单词为nowcoder,长度为8   

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
      /*  while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }*/

        String St = "";
        St = in.nextLine();//nextline 接受字符串
        int sum = 0;
        for(int i = St.length() - 1 ; i>=0; i--){
            if(St.charAt(i) ==' ')//接受字符
            {
                System.out.println(sum);
                return;
            }
            else{
                sum++;
            }
            
        }
        System.out.println(sum);


    }
}
  1. 描述
    写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围: 1 \le n \le 1000 \1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)

输入:
ABCabc
A
复制
输出:
2

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Scanner in2 = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String St = " ";
        String St2 =" "; 
        St = in.nextLine();
        St2 = in.nextLine();

        char[] arrays = St2.toCharArray();//字符串接受
        int sum = 0;
       // System.out.println(arrays[0]);
        for(int i = 0; i <St.length();i++){
            if(St.charAt(i) == St2.charAt(0)||St.toUpperCase().charAt(i) == St2.toUpperCase().charAt(0) ){//转换为同一大小写
            //toUpperCase()小写变大写
            //toLowerCase()大写变小写
                sum++;

            }




        }    
        System.out.println(sum);






    }
}

  1. 无重复子串(滑动窗口问题)
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n = s.length();
        if(n <= 1){
            return n;
        }
        
        int ans = 0;
        Set<Character> set = new HashSet<>();//构造散列表
        
   

        for(int i = 0;i < s.length();i++){
            set.add(s.charAt(i));//将字符传入到集合中
            for(int j = i + 1; j <=  s.length();j++){
                if(j == n||set.contains(s.charAt(j))){//缩放,有重复或者已经最大字符串
                ans = Math.max(ans,j-i);//判断窗口大小
                set.clear();
                break;
                }else{//扩张
                    set.add(s.charAt(j));
                }



            }


        }

        return ans;

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值