经典算法:(整理汇总)

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. php跨域

    <?php header('Content-type:text/html; charset="utf-8"'); $url = 'http://10.32.41.194:80 ...

  2. 【Coursera】Security Introduction -Eighth Week(1)

    Security Introduction People With Bad Intent 今天,Bob 向 Alice 发送了一条 "Hello,Allice!" 的信息,他们希望 ...

  3. web.xml配置文件详细解读

    对于一个J2EE应用的开发者,或者叫java web后台的开发者来说.经常会和web.xml打交道,偶尔用到几个标签不知道啥意思.然后就度娘一下,久而久之虽然大概知道web.xml的基本使用方法,但是 ...

  4. RTC(x86)

    RTC 原创,转载请写明出处. 一直以来想写一篇关于RTC的总结,可是人太懒,在读完John Z. Sonmez大伽的<软技能代码之外的生存技能>后,终于下定决心,完成这项早已计划中的任务 ...

  5. 生信软件的好帮手-bioconda--转载

    http://mp.weixin.qq.com/s/nK1Kkf9lfZStoX25Y7SzHQ 这篇文章主要适用于Linux平台,当然MacOS也行,不过它有更好安装方法. 此外网上也会许多更好的关 ...

  6. LINK : fatal error LNK1104: 无法打开文件“libboost_serialization-vc90-mt-gd-1_62.lib”

    boost安装:https://www.cnblogs.com/sea-stream/p/10205425.html 在vs中添加

  7. vmware 安装ubuntu

    点击自定义硬件 即将完毕 下面就是安装啦

  8. HDU 4489 The King's Ups and Downs

    HDU 4489 The King's Ups and Downs 思路: 状态:dp[i]表示i个数的方案数. 转移方程:dp[n]=∑dp[j-1]/2*dp[n-j]/2*C(n-1,j-1). ...

  9. [.NET开发] NPOI导出

    //导出全部 expertPara = GetExpetPara(); expertPara.BeginIndex = pager.CurrentPageIndex; expertPara.EndIn ...

  10. LeetCode--108--将有序数组转化为二叉搜索树

    问题描述: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10 ...