娱乐新闻

取出一个字符串中字母出现的次数,TreeMap,foreach.

帅比萌擦擦* 提交于 2020-03-29 05:01:24
package cn.mldn.demo; import java.util.Set; import java.util.TreeMap; public class TestDemo{ public static void main(String[] args) throws Exception { // 定义一个字符串 String str = "abcdekkacc27qoqaaaa"; // 定义一个treemap集合 TreeMap<Character, Integer> tm = new TreeMap<>(); // 把字符串转换成字符数组 char[] chs = str.toCharArray(); // 对数组进行遍历 // 如果是字符 // 不存在:则把字符做为键,值变为1 // 存在:值加1 for(Character ch : chs){ if((ch>66&&ch<91)||(ch>96&&ch<123)){ Integer i = tm.get(ch); if(i==null){ tm.put(ch, 1); }else { i++; tm.put(ch, i); } } } // 遍历输出 Set<Character> keyset=tm.keySet(); // System.out.println(keyset); for(Character

第一个只出现一次的字符(字符流中第一个只出现一次的字符)

泪湿孤枕 提交于 2020-03-24 23:50:59
题目   在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 思路 一   从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有 n 个字符,每个字符可能与后面的 O(n)个字符相比较,因此这种思路的时间复杂度是 O(n^2)。 二,记录法   由于题目与字符出现的次数相关, 我们是不是可以统计每个字符在该字符串中出现的次数?要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可以根据字符来查找它出现的次数,也就是说这个容器的作用是把一个字符映射成二个数字。在常用的数据容器中, 哈希表正是这个用途。   为了解决这个问题,我们可以定义哈希表的键(Key)是字符, 而值(Value )是该字符出现的次数。同时我们还需要从头开始扫描字符串两次。第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加 1 。接下来第二次扫描时, 每扫描到一个字符就能从哈希表中得到该字符出现的次数。这样第一个只出现一次的字符就是符合要求的输出。   第一次扫描时,在哈希表中更新一个字符出现的次数的时间是 O(n) 。如果字符串长度为 n, 那么第一次扫描的时间复杂度是 O(n)。第二次扫描时,同样 0(1

统计某字符(串)重复出现次数

醉酒当歌 提交于 2020-03-17 17:37:50
USE [ master ] GO /* ***** Object: UserDefinedFunction [dbo].[CharRepeat] Script Date: 04/06/2016 17:32:06 ***** */ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- 返回字符串中某字符出现次数,返回结果为INT,@str 字符串 @sub 目标字符,源码来源于百度搜索 -- ============================================= ALTER function [ dbo ] . [ CharRepeat ] ( @str varchar ( 8000 ), @sub varchar ( 50 )) returns int as begin declare @pos int , @n int select @n = 0 , @pos = charindex ( @sub , @str ) while ( @pos <> 0 ) begin select @str =right ( @str , len ( @str ) - @pos ), @pos = charindex ( @sub

数字在排序数组中出现的次数

ぐ巨炮叔叔 提交于 2020-03-13 13:14:05
题目描述 统计一个数字在排序数组中出现的次数。 因为在一个排序数组中,所以优先想到二分查找,分别找出第一个和最后一个 public class Solution { public int GetNumberOfK(int [] array , int k) { int length = array.length; if (length == 0) return 0; int firstk = getFirstK(array, k, 0, length - 1); int lastk = getLastK(array, k, 0, length - 1); if (firstk != -1 && lastk != -1) return lastk - firstk + 1; return 0; } private int getFirstK(int[] array , int k, int start, int end) { while (start <= end) { int mid = start + (end - start) / 2; if (array[mid] > k) end = mid - 1; else if (array[mid] < k) start = mid + 1; else if (mid - 1 >= 0 && array[mid - 1] == k)

调用远程Webservice出现java.lang.IllegalStateException: Unable to create schema compiler异常

廉价感情. 提交于 2020-03-04 21:53:14
今天在调试远程的Webservice的短信网关发送短信功能过程中出现了点异常,异常信息如下: ```java java.lang.IllegalStateException: Unable to create schema compiler at org.apache.cxf.common.jaxb.JAXBUtils.createSchemaCompilerWithDefaultAllocator(JAXBUtils.java:744) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createSchemaCompiler(DynamicClientFactory.java:445) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:325) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:243) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient

IT公司100题-17-第一个只出现一次的字符

拟墨画扇 提交于 2020-03-04 12:21:44
问题描述: 在一个字符串中找到第一个只出现一次的字符。例如输入asdertrtdsaf,输出e。 分析: 最简单的方法是直接遍历,时间复杂度为O(n^2)。 进一步思考: 字符串中的字符,只有256种可能性,使用字符的为下标,扫描一遍,存储各个字符在字符串中的出现。第二次扫描字符串,查看每个字符在字符串中的出现次数,如果为1,输出即可。 代码实现: package oschina.IT100; /** * @project: oschina * @filename: iT17.java * @version: 0.10 * @author: JM Han * @date: 12:54 2015/12/19 * @comment: find the 1st char that only exist once in string * @result: */ public class iT17 { public static Character findChar(String s){ int[] int_set = new int[256]; char[] char_set = s.toCharArray(); for(char c: char_set){ int_set[c]++; } for(char c: char_set){ if(int_set[c] == 1) return

解决方案 git@github.com出现Permission denied (publickey)

廉价感情. 提交于 2020-03-04 00:00:29
今天的任务是把项目通过git上传的github内,于是就出现了Permission denied (publickey)这个问题,现在我把自己的解决方案分享给大家。 一般来说,大家在给文件起名的时候,总会起一些自己喜欢的名字,楼主也不例外在使用命令: ssh-keygen 生成ssh 密钥的时候,会在 Enter file in which to save the key ("当前所在路径"): “给文件起个名字” 这里随便起一个名字,这样问题就出来了,你起的这个名字没有和ssh内设定的名字保持一致,所以使用命令 ssh -T git@github.com 的时候报出Permission denied (publickey).这个错误 当出现这个问题时,有两个比较简单的解决办法: 1) 给文件起名字的时候使用 ‘ id_rsa ’ 这个名字 2) 如果亲非要自己取名子,那就使用 ssh-add ~/.ssh/你的名字 将自己起的名字加入到ssh中 这样再使用 ssh -T git@github.com 就会看到你想要的效果了。 注:在生成密钥的时候,请在 “ ~/.ssh/ ”目录下操作。或者生成后把文件移动到“ ~/.ssh/ ”目录下。 如果有问题或不准确的地方,请大家及时批评指教,谢谢! 来源: oschina 链接: https://my.oschina.net/u

在liunx下经常出现java.net.SocketException: Too many open files错误是什么原因

本小妞迷上赌 提交于 2020-03-01 19:18:26
发布在Tomcat+linux服务器上的项目经常报”java.net.SocketException: Too many open files"的错误,根据错误分析如下 : Linux 系统默认的open files的设置是1024 通过 ulimit -a进行查看。 core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited pending signals (-i) 1024 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 16127 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 访问应用时,操作系统new

安装Apache2.4出现的问题

拥有回忆 提交于 2020-02-29 15:26:58
之前安装了Apache2.2,需要增加安装Apache2.4,步骤如下 将Apache2.4解压到新文件夹下 以管理员身份运行cmd,使用cd命令定位到Apache2.4的bin目录下(注意不在一个盘下需要先切换盘符,如下图) 运行httpd -k install -n apache2.4(名称可以自己随意取) 报了如下错: 打开 conf\httpd.conf 配置文件,看到设置如下 将路径修改为 自己解压Apache2.4 的路径 运行httpd -k uninstall -n apache2.4卸载服务 再次运行httpd -k install -n apache2.4安装服务 安装成功了! 来源: oschina 链接: https://my.oschina.net/u/2992450/blog/807456

【面试题029】数组中出现次数超过一半的数字

懵懂的女人 提交于 2020-02-28 21:16:15
【面试题029】数组中出现次数超过一半的数字 题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. 思路一: 对数组排序最快O(n*logn),排序后统计每个数字出现的次数,只需要遍历一遍就可以知道那个数字出现次数最多。 排序后,出现次数超过数组长度一半的那个一定出现在中间。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <iostream> #include <algorithm> using namespace std; int MoreThanHalfNum( int *numbers, int length) { //先对数组进行排序 sort(numbers, numbers + length); for ( int i = 0 ; i < length; ++i) { cout << numbers[i] << " " ; } cout << endl; return numbers[length / 2 ]; } int main() { int numbers[] = { 1 , 2 , 3 , 2 ,