经典算法:(整理汇总)

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. C#学习笔记(十五):抽象方法、抽象类、多态和接口

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. WebApi——json返回多了 k_BackingField

    产生原因: model类添加了    [System.Serializable] 解决方案: xxxxx.WebApi\App_Start\WebApiConfig.cs的Register函数中添加如 ...

  3. [Pytorch]深度模型的显存计算以及优化

    原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...

  4. nodejs+gulpjs压缩js代码

    1.安装node.js 下载地址:nodejs.org  或者  nodejs.cn 2.安装gulp之前我们需要安装nodejs的环境,检测能够正常使用npm后,我们用npm对gulp进行一次全局安 ...

  5. 模版层Template layer

    每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是 ...

  6. [ios][map]自定义地图标注

    参考:http://blog.csdn.net/mad1989/article/details/8794762 ios 一步一步学会自定义地图吹出框(CalloutView)-->(百度地图,高 ...

  7. js 中的几个假值

    1. 使用场景 if分支语句   /  短路语句while循环语句for里的第二个语句 2. 6个假值 (都属于 原始类型数据的一部分内容,非原始类型即对象都是真值,如:对象.数组.正则.函数   . ...

  8. 【Golang 接口自动化02】使用标准库net/http发送Post请求

    写在前面 上一篇我们介绍了使用 net/http 发送get请求,因为考虑到篇幅问题,把Post单独拎了出来,我们在这一篇一起从源码来了解一下Golang的Post请求. 发送Post请求 net/h ...

  9. crond 的注意点

    本来在控制台调试的好好的程序,一通过crond运行, 就执行不了. 一般需要注意: 1) 环境变量 当前目录 会变成用户的Home 2)  /var/log/messages 可以看出 crond 调 ...

  10. 利用 AttachThreadInput 改变其它进程的输入法状态

    利用 AttachThreadInput 和 WM_INPUTLANGCHANGEREQUEST 消息 改变 其它 进程 的 输入 状态 ? 众所周知,通过 ActivateKeyboardLayou ...