• 面向对象 (8)字符串出现字符个数统计 字母组成回文串判定


    题目1编写一个应用程序,统计输入的一个字符串中相同字符的个数,并将统计结果输出。

    一、源程序

    Test.java

    /**统计输入的一个字符串中相同字符的个数
     * 2个方法
     */
    package cn.edu.ccut.w1119t1;
    import java.util.Scanner;
    public class Test {
        public static int counter(String str){//统计该字符串出现字符个数
                String word1 = str.substring(0, 1);//截取当前串首字符
                int num = 0;//累计出现次数
                for(int j=0;j<str.length();j++){//遍历当前串
                    if(str.regionMatches(j, word1, 0, 1)){//在str串的j位置取长度为1的子串和截取子串的0位置取长度1的子串开始比较
                        num++;//相同为真则累加
                    }
                }
                System.out.print(word1+"的个数为"+num+"
    ");//将统计结果输出
                String str1 = str.replaceAll(word1, " ");//统计后的字符转空格
                String str2 = str1.trim();//删除空格
                if(str2.length()!=0){
                    counter(str2);//传回新子串递归统计
                }else{//如当前串经遍历长度为0退出方法结束遍历
                    return 0;
                }
                return 0;
        }
        public static void main(String[] args) {
            Scanner reader = new Scanner(System.in);
            System.out.print("请输入需要统计的一个字符串
    ");
            String str = reader.nextLine();//键盘获取当前行字符串存入str
            counter(str);//调用counter
        }
    }

    二、成功界面截图

    题目2编写程序,输入一个字符串,判断该串中的字母能否组成一个回文串(回文串:一个字符串从前向后读取和从后向前读取都一样)。如:ab<c>c?ba

    一、源程序

    Test.java

    /**判断串中字母能否组成回文串
     * 2个方法
     */
    package cn.edu.ccut.w1119t2;
    import java.util.Scanner;
    public class Test {
        static int letter(String s){//判断是否为英文字母
            char word[] = new char [1];
            word = s.toCharArray();//字符串转字符数组
             if(Character.isLetter(word[0])){//为字母返回0
                 return 1;
             }
            return 0;
        }
        public static void main(String[] args) {
            Scanner reader = new Scanner(System.in);
            System.out.print("请输入需要判断的一个字符串
    ");
            String str = reader.nextLine();//键盘获取输入的一个字符串
            int num = 0;//判断参数
            int i,j;
            for(i = 0,j = str.length()-1;i < str.length();){
                String word1 = str.substring(i, i+1);//从头取
                if(letter(word1)==0){//如果为非字母跳过
                    i++;
                    continue;
                }
                String word2 = str.substring(j, j+1);//从尾取
                if(letter(word2)==0){//如果为非字母跳过
                    j--;
                    continue;
                }
                if(word1.equals(word2)){//判等
                    num++;
                }else{
                    num=0;
                    break;
                }
                i++;j--;
            }
            if(num==0){
                System.out.print("该串中的字母不能组成一个回文串
    ");
            }else{
                System.out.print("该串中的字母能组成一个回文串
    ");
            }
        }
    }

    二、成功界面截图

  • 相关阅读:
    微软面试题: LeetCode 907. 子数组的最小值之和 middle 出现次数:1
    微软面试题: LeetCode 5. 最长回文子串 出现次数:1
    微软面试题: LeetCode 120. 三角形最小路径和 出现次数:1
    开源项目推荐:主流RPC开源框架及知识科普
    微软面试题: LeetCode 84. 柱状图中最大的矩形 出现次数:1
    需重点掌握的三大排序: 快速排序 + 归并排序 + 堆排序
    微软面试题:补充题12. 二叉树的下一个节点 出现次数:2
    微软面试题: 剑指 Offer 51. 数组中的逆序对 出现次数:2
    GUI
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/wangxiangyue/p/11891685.html
Copyright © 2020-2023  润新知