字符串问题之 字符串的统计字符串

问题1、给定一个字符串str, 返回str的统计字符串,

例如: “aaabbadddffc”的统计字符串为“a_3_b_2_a_1_d_3_f_2_c_1”

进阶题目:

给定一个统计字符串cstr, 在给定一个整数inde  返回代表的字符

问题2、例如: "a_1_b_100"  index=50的字符是’b‘

问题1思路:

str为空,则统计字符串不存在

str不为空,首先生成String类型res,表示统计字符串,num表示数量(初始位置:str[0], nim=1)

不停的遍历 就是看看 str[i]跟str[i-1]的关系 等于num++  不等于则 res=res+"_"+num+"_"+str[i](把当前的加入哈) 然后num=1 继续遍历~~~~~

写入num的条件是发现新字符时候,此时一定要注意!!! 当遍历结束时候!

package TT;

public class Test3 {

    public  static String getCountString(String str){

          if(str==null || str.equals("")){
               return "";
          }
          char[] chs = str.toCharArray();

          String res= String.valueOf(chs[0]);
          int num=1;

          for(int i =1; i<chs.length; i++){
               if(chs[i]!=chs[i-1]){
                   res = concat(res, String.valueOf(num), String.valueOf(chs[i]));
                   num=1;
               }else{
                   num++;
               }
          }

          return  concat(res, String.valueOf(num),"");

    }

     public static String concat(String s1, String s2, String s3){
         return s1+"_"+s2+(s3.equals("")?s3:"_"+s3);
     }

     public static void main(String[] args)    {

           String str  = "aaabbadddffc";
           String s = getCountString(str);
           System.out.println(s);

     } 

}

结果:

问题2

解题过程

1 boolean stage   控制进入哪个状态  true代表字符阶段    false代表遇到连续字符统计阶段  初始时候 stage=true   cur=0 num=0 sum=0

比较sum跟index的关系

上代码:

package TT;

public class Test3 {

    public static char getCharAt(String cstr, int index){
           if(cstr ==null || cstr.equals("")){
                return 0;
           }

           char[] chs=cstr.toCharArray();
           boolean stage = true;
           char cur = 0;
           int num = 0;
           int sum=0;
           for(int i =0; i!=chs.length; i++){
               if(chs[i]==‘_‘){
                    stage =!stage;
               }else if(stage){
                   sum +=num;
                   if(sum > index){
                       return cur;
                   }
                   num =0;
                   cur = chs[i];
               }else{
                   num = num*10+chs[i]-‘0‘;
               }
           }

           return sum+num>index?cur:0;

    }

    public static void main(String[] args){
        String cstr ="a_1_b_100";
        int index = 50;
        char a = getCharAt(cstr, index);
        System.out.println(a);
    }

}

结果:

时间: 2024-11-08 17:23:48

字符串问题之 字符串的统计字符串的相关文章

统计字符串中单词的个数

1.单纯统计单词个数,单词与单词之间只考虑空格的情况 // word_statistic.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <string> using namespace std; #define M 10000 #define N 20 int _tmain(int argc, _TCHAR* argv[]) { char str1[M]={0};

实验报告:统计字符串中子字符串出现的次数

实验报告 源程序: 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int cntstring(char *source,char *substr); 5 void main() 6 { 7 char str1[50],str2[20]; //str1 为主字符串,str2 为子字符串 8 cout<<"input source string:"; 9 cin.get

技巧之C#统计字符串中字符出现的次数(转)

方法1.自定义类 class CharNum { private char c; private int num; public char C { get { return c; } } public int Num { get { return num; } set { num = value; } } public CharNum(char ch) { this.c = ch; this.num = 1; } } static void Main(string[] args) { /* */

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例

1. 首先我们看看统计字符串中每个字符出现的次数的案例图解:

统计字符串中数字,字母,空格的个数

这是C语言课后的一道习题,网上可以找到很多相关的代码,都可以很好的基本完成题目要求 但是,我发现很多的代码都无法实现统计字符串中大于10的数字(只局限于统计0-9之间的数字) 此程序可以改进具有十位,百位,千位,甚至更大的数字的统计: #include<stdio.h> int main() { char a[50] ="1 2 3 a b c d @ 15 21 19 88 r 78 100 189 1598 46"; int i,j; int d = 0, c = 0,

统计字符串中的单词数目

统计字符串中单词的数目,更复杂的话从一个文本中读出字符串并生成单词数目统计结果.         第一个问题:这个问题的解决方案是,字符串之所以可以成为单词就是因为有空格符的出现,那么对于字符串中单词的数目来说,只需要统计其中空格符出现的次数就可以了~~~ 第二个问题,从文本中读出字符串并统计每一个单词的统计结果,那么久需要借助于字典map了,每一个单词使用了一个位置 ,如果是已经出现的单词,那么就给相应的单词数量加一,如果没有出现在字符串中,那么就添加该单词. 对于一串字符串来说,如果需要对于

PHP统计字符串里单词查询关键字

<?function full_count_words($str) {     //返回完整数组,包含字符串里每个单词 $words = str_word_count($str,1);     $result = array();     foreach ($words as $w) {         $lw = strtolower($w);         //判断单词是否是第一次出现,是则设置为1,否则就增加1 if (!(isset($result[$lw]))) {         

2014华为实习上级笔试题-- 统计字符串中出现的单词

#include<iostream> //#include<string> using namespace std; struct node { char word[10]; int num; }; node obj[100]; void my_word(char input[], char output[]) { int sum=0,flag=0; int i=0,j=0,k=0; while(input[i]!='\0')///////////读入单词 { if((input[