经典算法:(整理汇总)

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的更多相关文章

  1. A*算法 -- 八数码问题和传教士过河问题的代码实现

    前段时间人工智能的课介绍到A*算法,于是便去了解了一下,然后试着用这个算法去解决经典的八数码问题,一开始写用了挺久时间的,后来试着把算法的框架抽离出来,编写成一个通用的算法模板,这样子如果以后需要用到 ...

  2. 《C与指针》第十五章练习

    本章例程 15.1打开和关闭文件 #include <stdlib.h> #include <stdio.h> int main(int ac, char **av) { in ...

  3. .Net平台下,分布式文件存储的实现

    遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...

  4. 进程&信号&管道实践学习记录

    程序分析 exec1.c & exect2.c & exect3.c 程序代码 (以exect1.c为例,其他两个结构类似) #include <stdio.h> #inc ...

  5. strtok&strsep

    strtok,strtok_r,strsep--extract tokens from strings Tje strsep() function was introduced as a replac ...

  6. 从底层理解Python的执行

    摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ...

  7. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  8. pipe()管道最基本的IPC机制

    <h4>进程间通信 fork pipe pie_t 等用法(管道机制 通信)</h4>每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之 ...

  9. linux消息队列操作

    对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以 ...

随机推荐

  1. 04_Flume多节点load_balance实践

    1.负载均衡场景 1)初始:上游Agent通过round_robin selector, 将event轮流发送给下游Collecotor1, Collector2 2)故障: 关闭Collector1 ...

  2. POJ 3624 Charm Bracelet(0-1背包模板)

    http://poj.org/problem?id=3624 题意:给出物品的重量和价值,在重量一定的情况下价值尽可能的大. 思路:经典0-1背包.直接套用模板. #include<iostre ...

  3. BZOJ 1068 【SCOI2007】 压缩

    题目链接:压缩 区间动归水题.稍微有一点细节. 令\(f_{l,r}\)表示区间\([l,r]\)最短压缩长度,默认\(l\)位置之前有个\(M\).然后就枚举一下放不放\(R\),\(M\)放哪个位 ...

  4. c语言 快速排序

    #include<stdio.h> #include<stdlib.h> #define BUF_SIZE 10 void display(int array[], int m ...

  5. MongoDB (课时1,2)

    1.数据库之中支持的的SQL语句是由IBM开发出来的,使用并不麻烦,就是几个简单的单词:select, from, where,  group by, having, order by.目前最流行的数 ...

  6. VC6的VCVARS32.BAT所在位置

    1. C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT 2.

  7. 深度排序与alpha混合

    原文: https://blogs.msdn.microsoft.com/shawnhar/2009/02/18/depth-sorting-alpha-blended-objects/ 翻译:李现民 ...

  8. RabbitMQ入门_14_Policies

    参考资料:https://www.rabbitmq.com/parameters.html#policies A. Policies 的用途 RabbitMQ 有很多可选参数(x-arguments) ...

  9. Android Toast.makeText用法

    Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.下面用一个实例来看看如何使用Toast ...

  10. FASTQ 数据质量统计工具

    主流工具: FastQC fqcheck readfq 拿到测序数据的第一步就是做质量控制 fqcheck之后得到的结果: 它会统计每条reads,按read 1-100位点计算每个位置的ACGTN含 ...