给定一个字符串,找出这个字符串中首先出现K次的字符

public static Character FindFirstKChar(String str,int k){
	String s = str.replaceAll(" ","");
        Map<Character, Integer> charCountMap = new HashMap<Character, Integer>();
        Character ch = null;
        for(int i = 0; i < s.length(); i++){
        	if(charCountMap.containsKey(s.charAt(i))){
        		charCountMap.put(s.charAt(i), charCountMap.get(s.charAt(i))+1);
        	}else{
        		charCountMap.put(s.charAt(i), 1);
        	}
        	if(charCountMap.get(s.charAt(i))==3){
        		ch=s.charAt(i);
        	break;
        	}
        }
        return ch;
}
时间: 2024-08-06 16:06:21

给定一个字符串,找出这个字符串中首先出现K次的字符的相关文章

在线性级别时间内找出无序序列中的第k个元素

在一个无序序列中找出第k个元素,对于k很小或者很大时可以采取特殊的方法,比如用堆排序来实现 .但是对于与序列长度N成正比的k来说,就不是一件容易的事了,可能最容易想到的就是先将无序序列排序再遍历即可找出第k个元素.由于任何基于比较的排序算法不可能用少于Θ(N lgN)次比较来实现将所有元素排序,所以采用排序的方法的时间复杂度是线性对数级别的. 我们可以借鉴快速排序中将序列划分的思想来实现平均情况下线性级别的算法,算法实现如下: 1 public class KthElement { 2 3 pr

算法:找出 n 个数中最小的 k 个数

最简单的方法是将n个元素排序,取出最小的k个元素.这个算法的时间复杂度为 O(nlgn). 然而在输入的n个元素互异的情况下,利用最大堆,我们可以获得时间复杂度为 O(nlgk)的算法. 1 #include <stdio.h> 2 3 #define N 128 4 5 int heap[N], max_size, cur_pos = 1; 6 7 void adjust(int i) { // bottom up 8 int x = heap[i]; 9 int p = i / 2; 10

找出该字符串中出现次数最多的那个字符

/*时间限制 C/C++ 3s 其他 6s, 空间限制 C/C++ 32768k 其他 65535k 题目描述     给定一个长度不限的字符串,请找出该字符串中出现次数最多的那个字符,并打印出该字符及其出现次数; 如果多个字符的出 现次数相同,只打印首个字符;输出字符的大小写格式要与输 入保持一致,大小写不敏感模式下, 输出字符的大小写格式与该 字符首次出现时的大小写格式一致.实现时无需考虑非法输. 输入描述     输入为 字符串大小写敏感标记 其中"大小写敏感标记"为可选参数,取

从两个字符串中找出最大公共子字符串

从两个字符串(str_1,str_2)中找出最大公共子字符串(comString)的方法为: 选取长度较短的字符串(假设str_1较短)做截取: 从字符串中截取长度为1的子字符串: 每个子字符串都在str_2中做查询,查询到则将该字符串赋予comString: 从字符串中截取长度为2的子字符串,重复3: 从字符串中截取长度为n的子字符串,重复3: 结束. 截取字符串例子: 实例: [Java] /** * create by lijiaman on 2016-09-24 * 题目:求两个字符串的

找出子字符串在字符串中的所有索引

/// <summary> /// 找出子字符串在字符串中的所有索引,"ccc"在"ccccc"中认为只有一个 /// </summary> /// <param name="str"></param> /// <param name="subStr"></param> /// <returns></returns> private

用JAVA写一个函数,功能如下: 任意给定一组数, 找出任意数相加之后的结果为35(任意设定)的情况

用JAVA写一个函数.功能如下:任意给定一组数,例如{12,60,-8,99,15,35,17,18},找出任意数相加之后的结果为35(任意设定)的情况. 可以递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int s

【原创】字符串工具类--找出单元字符串

package week01; import java.util.regex.Matcher; import java.util.regex.Pattern; /**** * * 字符串帮助类 * @author csharper * @since 2014.10.08 * */ public class StringHelper { /*** * 找出单位字符串大小 * @param str 源字符串 * @return 单位字符串大小 */ public static int findUni

一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下来N行,每行M个数,表示矩阵每个元素的值 输出: 输出最小面积的值.如果出现任意矩阵的和都小于K,直接输出-1. 样例输入: 4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 样例输出: 1 首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3lo

使用一个函数找出一个整型数组中的最大值和最小值

/***************************************************** 知识点:bool类型,命名空间,输入输出 题目要求: 使用一个函数找出一个整型数组中的最大值和最小值 *****************************************************/ #include<stdlib.h> #include<iostream> using namespace std; namespace CJJ // 定义命名空间

delphi程序向另一个可执行程序发消息(使用GetForegroundWindow; 找出当前操作系统中活动的第一个窗口)

function FindWindowThroughWindowText(WindowText: string): THandle;var  hCurrentWindow: THandle;  cnt: Integer;  WindowTitle: array [0 .. 254] of Char;begin  Result := INVALID_HANDLE_VALUE; // 返回值预设为无效的句柄  hCurrentWindow := GetForegroundWindow; // 找出当