zoukankan      html  css  js  c++  java
  • "Coding Interview Guide" -- 字符串的统计字符串

    题目

      给定一个字符串str,返回str的统计字符串

      例如,"aaabbadddffc"的统计字符串为"a_3_b_2_a_1_d_3_f_2_c_1"

     1 public String count(String str)
     2 {
     3     if(str == null || str.equals(""))
     4     {
     5         return "";
     6     }
     7 
     8     char[] chas = str.toCharArray();
     9     String cstr = String.valueOf(chas[0]);
    10     int num = 1;
    11     for(int i = 1; i < chas.length; i++)
    12     {
    13         if(chas[i] != chas[i - 1])
    14         {
    15             cstr = concat(cstr, String.valueOf(num), String.valueOf(chas[i]));
    16             num = 1;
    17         }
    18         else
    19         {
    20             num++;
    21         }
    22     }
    23         
    24     return concat(cstr, String.valueOf(num), "");
    25 }
    26 
    27 
    28 public String concat(String s1, String s2, String s3)
    29 {
    30     return s1 + "_" + s2 + (s3.equals("") ? s3 : "_" + s3);
    31 }            

    题目

      给定一个字符串的统计字符串cstr,再给定一个整数index,返回cstr所代表的原始字符串上的第index个字符

      例如,"a_1_b_100"所代表的原始字符串上第0个字符是'a',第50个字符是'b'

     1 public char getCharAt(String str, int index)
     2 {
     3     if(str == null || str.equals("") || index < 0)
     4     {
     5         return 0;
     6     }
     7 
     8     char[] chas = str.toCharArray();
     9     boolean stage = true;
    10     char cur = 0;
    11     int sum = 0;
    12     int num = 0;
    13     for(int i = 0; i < chas.length; i++)
    14     {
    15         if(chas[i] == '_')
    16         {
    17             stage = !stage;
    18         }
    19         else if(stage)
    20         {
    21             sum += num;
    22             if(sum > index)
    23             {
    24                 return cur;
    25             }
    26             num = 0;
    27             cur = chas[i];
    28         }
    29         else
    30         {
    31             num = num * 10 + chas[i] - '0';
    32         }
    33     }
    34     return sum + num > index ? cur : 0;
    35 }
    36 
    37     

    来源:左程云老师《程序员代码面试指南》

  • 相关阅读:
    并发
    基础概念总结
    Tomcat总结
    JVM总结
    Spring事务管理
    数据结构和算法
    拦截器
    关于XML fragments parsed from previous mappers already contains value for错误的探索
    zookeeper比较好的学习地址
    关于idea中的maven打包
  • 原文地址:https://www.cnblogs.com/OoycyoO/p/10943819.html
Copyright © 2011-2022 走看看