the usage of String
经典算法:(整理汇总)
1)如何快速倒叙:
public static char[] reverseArray(char[] c){
char t;
for(int i=0;i<c.length/2;i++){
t = c[i];
c[i] = c[c.length-1-i];
c[c.length-1-i] = t;
}
return c;
}
2)
/**
* 编写一个截取字符串的函数,输入为一个字符串和字节数,
* 输出为按字节截取的字符串,但要保证汉字不被截取半个,
* 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,
* 应该输出“我ABC”,而不是“我ABC+汉的半个”。
*/
public class SubString {
public static void main(String[] args) throws Exception{
String str1 ="我ABC汉";
int num =trimGBK(str1.getBytes("GBK"),5);
System.out.println(str1.substring(0,num));
}
//算法,返回一个数字表示截取的长度
public static int trimGBK(byte[] buf,int n){
int num = 0;
boolean bChineseFirstHalf = false;
for(int i=0;i<n;i++){
if(buf[i]<0&& !bChineseFirstHalf){
bChineseFirstHalf= true;
}else{
num++;
bChineseFirstHalf= false;
}
}
return num;
}
}
3)
/**
* 有一个字符串,
* 其中包含中文字符、英文字符和数字字符,
* 请统计和打印出各个字符的个数
*/
public static void main(String[] args) {
String content = "fs2爱国a4324hf年gd费合342计kjiods爱国32";
Map<Object,Object> map = new HashMap<Object,Object>();
for(int i=0;i<content.length();i++){
//获得每个key,用c表示
char c = content.charAt(i);
//根据key值返回value,用num表示
Integer num = (Integer)map.get(c);
if(num==null){
num=1;
}else{
num+=1;
}
map.put(c, num);
}
Set<Entry<Object,Object>> entries = map.entrySet();
for(Entry<Object,Object> entry : entries){
System.out.println(entry.getKey()+ ":"
+ entry.getValue());
}
}
4)
/**
* 如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,
* 中文字符的数量,和数字字符的数量,
* 假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符
*/
public static void main(String[] args) {
String str = "aa36法搜89aav大bbc中国15啥12";
int englishChar = 0;
int chineseChar = 0;
int digitalChar = 0;
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
englishChar++;
}else if(c>='0'&&c<='9'){
digitalChar++;
}else{
chineseChar++;
}
}
System.out.println("该字符串中英文字符个数是:"+englishChar+"" +
"个;数字字符个数是:"+digitalChar+"个;" +
"中文字符个数是:"+chineseChar+"个");
}
5)快速查重
public static void main(String[] args) throws Exception {
int[] list=new int[1000000];
int i = 0;
for (;i<list.length;i++) {
list[i]=i;
}
//设置一个重复的数,使第600000个数和第90000个数是均为90000
list[600000]=90000;
Set set = new HashSet();
for( i=0;i<list.length;i++){
//利用set的add方法,如果已经存在,则返回false
if(!set.add(list[i]))
break;
}
System.out.println("the same number is "+list[i]);
}
6)统计字符串中“中国”个数
解一:前后加空格,使用split
public static void main(String[] args) {
String str = "中国的说法中国人家的废旧发丝啊发哈U盾和综合哦啊过后中国fo" +
"adsjfidsojoafsjjfsadzhonga哈哈发中国孤" +
"粉丝大呼覅护肤is傲中国";
str = " "+str+" ";//前后各加一个空格
System.out.println(str.split("中国").length-1);
}
解二:
public static void main(String[] args) {
String str=("中国dfghds中佛挡杀佛国hfrtdhg中国ffdhfdhhtfnx中国sadgh中国上");
int a = str.length()-str.replaceAll("中国", "").length();
System.out.println(a/2);
}
the usage of String的更多相关文章
- A*算法 -- 八数码问题和传教士过河问题的代码实现
前段时间人工智能的课介绍到A*算法,于是便去了解了一下,然后试着用这个算法去解决经典的八数码问题,一开始写用了挺久时间的,后来试着把算法的框架抽离出来,编写成一个通用的算法模板,这样子如果以后需要用到 ...
- 《C与指针》第十五章练习
本章例程 15.1打开和关闭文件 #include <stdlib.h> #include <stdio.h> int main(int ac, char **av) { in ...
- .Net平台下,分布式文件存储的实现
遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...
- 进程&信号&管道实践学习记录
程序分析 exec1.c & exect2.c & exect3.c 程序代码 (以exect1.c为例,其他两个结构类似) #include <stdio.h> #inc ...
- strtok&strsep
strtok,strtok_r,strsep--extract tokens from strings Tje strsep() function was introduced as a replac ...
- 从底层理解Python的执行
摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- pipe()管道最基本的IPC机制
<h4>进程间通信 fork pipe pie_t 等用法(管道机制 通信)</h4>每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之 ...
- linux消息队列操作
对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以 ...
随机推荐
- 《EMCAScript6入门》读书笔记——24.编程风格
- socket编程时使用了inet_ntoa函数,存储到链表中的数据总是自动改变
这和inet_ntoa的返回值有关系: 函数声明:char *inet_ntoa (struct in_addr); 返回点分十进制的字符串在静态内存中的指针. 所在头文件:<arpa/inet ...
- Ubuntu16.04 无法连接WiFi
在安装完 ns-3.25 之后,着手开始准备 Eclipse 的安装,打开了 Firefox游览器 准备上网的时候,发现网络没有正常连接. 刚刚开始怀疑的是,并没有连接上网络. 于是打开了终端,pin ...
- js ajax跨域
一般情况后台返回... 也就是说,无论数据本身是什么数据类型,数据,对象,都是以字符串形式返回的. 如何把字符串化成相应对象. 如: var s='{"left":100}' co ...
- UVa 127 纸牌游戏(栈)
https://vjudge.net/problem/UVA-127 题意: 按从左至右的顺序发牌,并摆成一行,发牌不要相互重叠.游戏中一旦出现任何一张牌与它左边的第一张或第三张“匹配”,即花色或点数 ...
- 关于Dos命令中存在中文的解决方法
问题:当我们直接打开dos窗口并在里面写入中文时是没有问题的,但是当我们把这些命令放在bat文件中执行时就出问题了解决:1.首先可以通过pause命令来查看错误原因2.记事本默认是UTF-8格式的,而 ...
- js插件---Bootstrap 树控件
js插件---Bootstrap 树控件 一.总结 一句话总结:可以直接用gojs,或者搜索js,jquery的树控件,或者bootstrap树控件,一大堆 gojs 二.JS组件系列——Bootst ...
- WPF 的 数据源属性 和 数据源
(一)数据源(数据对象)属性 :path 或 path的值(path=VM.Property或M.Property),通常具有通知功能(特例除外). (二)path不能孤立而存在,它一定具有所归属的 ...
- TCP三次握手(待细研究)
xu言: 看到一张不错清晰的Tcp三次握手图,收藏 Initiator 发起人 Receiver 接收者 LISTENING 状态xx服务启动后首先处于侦听(LISTENING)状态. ESTAB ...
- LeetCode--038--报数(*)
问题描述: 报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one ...