字符个数统计、 数字颠倒 题目

HJ10 字符个数统计

描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1≤𝑛≤500 1≤n≤500

输入描述:

输入一行没有空格的字符串。

输出描述:

输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

示例:

输入:abc
输出:3
输入:aaa
输出:1

 

分析:

​ 1.判断字符串中的字符是否在0–127的区间内。

​ 2.使用LinkedHashSet集合去重。

 

代码:

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.next();
        LinkedHashSet<Character> set=new LinkedHashSet<>();
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i)>=0 &&str.charAt(i)<=127){
                set.add(str.charAt(i));
            }
        }
        System.out.println(set.size());
    }
}

 
 

大佬代码:

import java.util.Scanner;
import java.util.BitSet;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.next();
        //总共有128个字符。字需要用128位
        BitSet bitSet = new BitSet(128);
        for (char c : line.toCharArray()) {
            //判断字符c是否已出现
            if (!bitSet.get(c)) {
                //未出现就设置为已出现
                bitSet.set(c);
            }
        }
        //统计有多少字符已出现过
        System.out.println(bitSet.cardinality());
    }
}

 
 
 

使用HashSet

import java.util.HashSet;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        String str=in.next();
        HashSet<Character> hs=new HashSet<Character>();
        for(int i=0;i<str.length();i++)
            hs.add(str.charAt(i));
        System.out.println(hs.size());
    }
 
}

 
 
 

HJ11 数字颠倒

描述

输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

数据范围: 0≤𝑛≤230−1 0≤n≤230−1

输入描述:

输入一个int整数

输出描述:

将这个整数以字符串的形式逆序输出。

示例:

输入:1516000
输出:0006151
输入:0
输出:0

 

分析:

​ 1.把数字转为字符串。

​ 2.使用StringBuilder类的reverse方法进行逆序。

 
 

代码:

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num=sc.nextInt();
        String str=num+"";
        StringBuilder sb=new StringBuilder(str);
        sb=sb.reverse();
        str=sb.toString();
        System.out.println(str);

    }
}

 
 

大佬代码:

使用for循环。

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int in=sc.nextInt();
        String str=String.valueOf(in);
        for(int i=str.length()-1;i>=0;i--){
            System.out.print(str.charAt(i));
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值