经典算法:(整理汇总)

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. stm32 延时函数 delay_ms 范围

    void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器 ...

  2. 不在同一主机:vsftpd+pam+mysql

    配置环境:Centos7上的mariadb + Centos6上的vsftpd 一.安装所需要程序 1.安装vsftpd和pam_mysql(在centos6-->192.168.108.160 ...

  3. 非[无]root权限 服务器 下安装perl以及perl模块--转载

    转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...

  4. Error: Checksum mismatch.

    bogon:bin macname$ brew install go ==> Downloading https://homebrew.bintray.com/bottles-portable- ...

  5. python 斐波那契查找

    def fibonacci_search(lis, key): # F = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 ...

  6. PHP自带调试函数

    1.var_dump:打印变量的相关信息 $a = array(1, 2, array("a", "b", "c")); var_dump( ...

  7. 对微服务API服务网关的理解

    目录微服务专栏地址目录1. 简介2. 什么是API网关3. 为什么需要API网关4. API网关在微服务架构体系中处于什么位置4.1 调用者眼中的API网关4.2 所处的位置5. 网关技术实现有哪些6 ...

  8. spring boot 2.0+ 错误页面配置

    如果访问了错误的路径,或者后台报错 如果没有一个统一的页面! 或者说页面上展示一堆报错信息,既影响美观,又对用户不友好! 那么如何配置? 定义 ErrorPageConfig,配置错误状态与对应访问路 ...

  9. android--------根据文件路径使用File类获取文件相关信息

    Android通过文件路径如何得到文件相关信息,如 文件名称,文件大小,创建时间,文件的相对路径,文件的绝对路径等. 如图: public class MainActivity extends Act ...

  10. Confluence 6 自动添加用户到用户组

    默认组成员(Default Group Memberships) 选项在 Confluence 3.5 及后续版本和 JIRA 4.3.3 及后续版本中可用.这字段将会在你选择 'Read Only, ...