经典算法:(整理汇总)

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. Gym - 100342J Triatrip (bitset求三元环个数)

    https://vjudge.net/problem/Gym-100342J 题意:给出一个邻接矩阵有向图,求图中的三元环的个数. 思路: 利用bitset暴力求解,记得最后需要/3. #includ ...

  2. UVa 11491 奖品的价值

    https://vjudge.net/problem/UVA-11491 题意:一个n位整数,删除其中的d个数字,输出最大值. 思路:肯定从高位开始分析,代码如下. #include<strin ...

  3. 翻译header

    !/usr/bin/env pyhton --coding:utf-8-- import urllib.request import urllib.parse import os,sys import ...

  4. 获取CheckBox的值

    前台获取 function chkCheckBox() { var code_arr = new Array(); //定义一数组 $('.C_B').each(function () { if ($ ...

  5. OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

    经过搜索查找,发现错误原因是我在win7 x64的机器上装了64位的python IDLE,不能有效load32位的dll,换成32位的python就好了.

  6. go 语言字典元素删除

    package main import "fmt" func main() { /* 创建map */ countryCapitalMap := map[string]string ...

  7. django 数据库同步

    python manage.py makemigrations python manage.py migrate

  8. MVC动态二级域名解析

    动态二级域名的实现: 应用场景:目前产品要实现block功能,因为工作需要实现二级域名:www.{CompanyUrl}.xxx.com 假设产品主域名入口为:www.xxx.com 公司员工管理:w ...

  9. python 函数参数介绍

    python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...

  10. 开发shellcode的艺术

    专业术语 ShellCode:实际是一段代码(也可以是填充数据) exploit:攻击通过ShellCode等方法攻击漏洞 栈帧移位与jmp esp 一般情况下,ESP寄存器中的地址总是指向系统栈且不 ...