分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程大家好欢迎来到我的网站 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑人工智能时代就要来临了科… 继续阅读 前言https://www.captainai.net/troubleshooterpackage live.every.day.ProgrammingDesign.CodingInterviewGuide.String; /** * 字符串的统计字符串 * * 【题目】 * 给定一个字符串str返回str的统计字符串。例如aaabbadddffc的统计字符串为a_3_b_2_a_1_d_3_f_2_c_1。 * * 【补充题目】 * 给定一个字符串的统计字符串cstr再给定一个整数index返回cstr所代表的原始字符串上的第index个字符。例如 * a_1_b_100所代表的原始字符串上第0个字符是a第50个字符是b。 * * 【难度】 * 简单 * * 【解答】 * 补充问题。求解的具体过程如下 * * 1.布尔型变量stagestage为true表示目前处在遇到字符的阶段stage为false表示目前处在遇到连续字符统计的阶段。字符型 * 变量cur表示在上一个遇到字符阶段时遇到的是cur字符。整型变量num表示在上一个遇到连续字符统计的阶段时字符出现的 * 数量。整型变量sum表示目前遍历到cstr的位置相当于原字符串的什么位置。初始时stagetruecur0字符编码为0表示空 * 字符num0sum0。 * 2.从左到右遍历cstr。也就是说每遇到一个新的字符都把上一个己经完成的统计数num加到sum上再看sum是否到达index如 * 果己到达就返回上一个字符cur如果没到达就继续遍历。 * 3.每个字符的统计都在遇到新字符时加到sum上所以当遍历完成时最后一个字符的统计数并不会加到sum上最后要单独加。 * * 具体过程请参看如下代码中的getCharAt方法。 * * author Created by LiveEveryDay */ public class StatisticalStringOfString2 { 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_100_b_2_c_4; int index 105; System.out.printf(The character is: %c, getCharAt(cstr, index)); } } // ------ Output ------ /* The character is: c */