1. 程式人生 > >在一個字符串中,統計大寫字母個數,小寫字母個數,其他字符個數的四種算法

在一個字符串中,統計大寫字母個數,小寫字母個數,其他字符個數的四種算法

nload PC 這一 write pro ews toc title 指定

題目描述:編寫程序,輸出字符串中的大寫字母、小寫小母和其他的個數。如有一個字符串"Helle, This is A test textfile.123456, tannk you!!",則其大寫字母個數:3,小寫字母個數:29,其他字符個數:18.

這裏提供了四種算法,第一種是我們比較好理解的,也屬於硬編碼問題,其他三種方法要借助JAVA語言的jdk提供的api。

方法一:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js分析字符串內容</title>
    <!--實現一個函數,輸出某字符串裏有幾個大寫字母,小寫字母,數字,其他符號。字符串由形參指定 -->
    <script>
        var str = prompt("請隨意輸入大寫字母小寫字母數字及符號等");
        function analyze(aa){
            var a = 0;
            var A = 0;
            var n = 0;
            var other = 0;
            for (var i=0;i<aa.length;i++){
                var c = aa.substr(i,1);
                if (c>=‘a‘ && c<=‘z‘){
                    a++;
                }else if(c>=‘A‘ && c<=‘Z‘){
                    A++;
                }else if(c>=‘0‘ && c<=‘9‘){
                    n++;
                }else{
                    other++;
                }
            }
            document.write("小寫字母為"+a,"大寫字母為"+A,"數字為"+n,"其他字符為"+other);
        }
    </script>
</head>
<body onload="analyze(str)">

</body>
</html>

  

[java] view plain copy
  1. //方法一:在利用每個字符的Unicode碼在a~z之間,調用jdk提
  2. //供的String類的charAt取出字符串每一個字符,逐個進行比較來判定
  3. class FindLetter {
  4. public static void main(String[] args) {
  5. String str = "Helle, This is A test textfile.123456, tannk you!!";
  6. int upCount = 0;
  7. int lowCount = 0;
  8. int otherCount = 0;
  9. for(int i = 0; i < str.length(); i++) {
  10. char c = str.charAt(i);
  11. if(c >= ‘a‘ && c <= ‘z‘) {
  12. lowCount++;
  13. } else if(c >= ‘A‘ && c <= ‘Z‘) {
  14. upCount++;
  15. } else {
  16. otherCount++;
  17. }
  18. }
  19. System.out.println("大寫之母個數:" + upCount);
  20. System.out.println("小寫字母個數:" + lowCount);
  21. System.out.println("其他字符個數:" + otherCount);
  22. }
  23. }

方法二:

[java] view plain copy
  1. //方法二:用jdk的Character類的isUpperCase方法和isLowerCase方法
  2. class FindLetter1 {
  3. public static void main(String[] args) {
  4. String str = "Helle, This is A test textfile.123456, tannk you!!";
  5. int upCount = 0;
  6. int lowCount = 0;
  7. int otherCount = 0;
  8. for(int i = 0; i < str.length(); i++) {
  9. char c = str.charAt(i);
  10. if(Character.isUpperCase(c)) {
  11. upCount++;
  12. } else if(Character.isLowerCase(c)) {
  13. lowCount++;
  14. } else {
  15. otherCount++;
  16. }
  17. }
  18. System.out.println("大寫字母個數:" + upCount);
  19. System.out.println("小寫字母個數:" + lowCount);
  20. System.out.println("其他字母個數:" + otherCount);
  21. }
  22. }


方法三:

[java] view plain copy
  1. //方法三:先定義兩個字符串a到z和A到Z,再逐個取出str字符串中的每個字母,
  2. //用indexOf()方法來判斷字符是否在這這個定義的字符串中,在大寫字母這一行,
  3. //大寫字母的計數器就加1,在小寫字母這行,小寫字母就加一,否則其他字母計算器
  4. //加1
  5. class FindLetter2 {
  6. public static void main(String[] args) {
  7. String low = "abcdefghijklmnopqrstuvwxyz";
  8. String up = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  9. int lowCount = 0;
  10. int upCount = 0;
  11. int otherCount = 0;
  12. String str = "Helle, This is A test textfile.123456, tannk you!!";
  13. for(int i = 0; i < str.length(); i++) {
  14. char c = str.charAt(i);
  15. if(low.indexOf(c) != -1) {
  16. lowCount++;
  17. } else if(up.indexOf(c) != -1) {
  18. upCount++;
  19. } else {
  20. otherCount++;
  21. }
  22. }
  23. System.out.println("大寫字母個數:" + upCount);
  24. System.out.println("小寫字母個數:" + lowCount);
  25. System.out.println("其他字母個數:" + otherCount);
  26. }
  27. }


方法四:

[java] view plain copy
  1. //把str分別轉化為大寫和小寫 大寫用sU 小寫 sL
  2. //然後通過與原串比較來統計個數
  3. class FindLetter3 {
  4. public static void main(String[] args) {
  5. String str = "Helle, This is A test textfile.123456, tannk you!!";
  6. String sU = str.toUpperCase();
  7. String sL = str.toLowerCase();
  8. int lowCount = 0;
  9. int upCount = 0;
  10. int otherCount = 0;
  11. for(int i = 0; i < str.length(); i++) {
  12. char charSTR = str.charAt(i);
  13. char charSU = sU.charAt(i);
  14. char charSL = sL.charAt(i);
  15. //如果不是字母,是其他字符,則直接用otherCount來計數
  16. if(Character.isLetter(charSTR)) {
  17. //如果原串與轉換過後的大寫字母串相等,則原來字符為大寫字母,
  18. //若與小寫字母相等,則為小寫字母
  19. if( charSTR == charSU) {
  20. upCount++;
  21. } else if(charSTR == charSL) {
  22. lowCount++;
  23. }
  24. } else {
  25. otherCount++;
  26. }
  27. }
  28. System.out.println("大寫字母個數:" + upCount);
  29. System.out.println("小寫字母個數:" + lowCount);
  30. System.out.println("其他字母個數:" + otherCount);
  31. }
  32. }


這四種算法都有正確的輸出:

大寫字母個數:3
小寫字母個數:29
其他字母個數:18

在一個字符串中,統計大寫字母個數,小寫字母個數,其他字符個數的四種算法