the usage of String

经典算法:(整理汇总)

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);
}

时间: 2024-12-28 02:18:00

the usage of String的相关文章

atof函数的自实现

atof函数,用于将字符串参数转化为浮点型 /*  系统:linux  自实现atof函数,主函数用于参数合法化的判断,若合法则调用子函数,否则退出  此程序包含两种算法的atof实现,均有效 */ #include <stdio.h> #include <string.h> float str_to_float(char *str); float str_to_float1(char *str); int main(int argc, char* argv[]) {     /*

2014025674(16) 《嵌入式系统程序设计》第七周学习总结

本周学习了第八章的主要内容主要包括两大部分分别为: 一.有名管道FIFO 1.有名管道说明 定义:有名管道的出现突破了只能用于具有亲缘关系的进程之间,这就大大地限制了管道的使用限制,它可以使互不相关的两个进程实现彼此通信.该管道可以通过路径名来指出, 并且在文件系统中是可见的.在建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作, 使用非常方便. 注意:FIFO 是严格地遵循先进先出规则的,对管道及 FIFO 的读总是从开始 处返回数据,对它们的写则把数据添加到末尾,它们不支持如 l

Info.plist配置文件(一些主要的属性配置)

键 类型 值 说明 图示 Localization native development region String China/Canada/Japan/United State等 本地化,设成相应的值后,App中的显示语言等信息变为相应国家的语言 Bundle display name String 如设为网易云 即为在App图标下方显示的语言 Application requires iPhone environment Boolean Yes 表明该app只允许在iOS上运行 Suppo

strtok&amp;strsep

strtok,strtok_r,strsep--extract tokens from strings Tje strsep() function was introduced as a replacement for strtok, since the latter cannot handle empty fileds. However, strtok conforms to C89/C99 and hence is more portable. #include <string.h> ch

从底层简析Python程序的执行过程

摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似 YIELDVALUE.YIELDFROM操作码的实现,推式构造列表(List Comprehensions).生成器表达式(generator expressions)以及其他一些有趣Python的编译. 关于译者:赵斌, OneAPM工程师,常年

字符串的全排列

假定字符串S,以字符序列a1a2...an表示.例如: 对于字符串"abc", 全排列为cba bca bac cab acb abc 本文采用非递归方法分别给出Python版实现和C代码实现. 1 #!/usr/bin/python 2 import sys 3 4 def str2listuniq(s): 5 l = [] 6 for c in list(s): 7 if c not in l: 8 l.append(c) 9 return l 10 11 def insert_c

从底层理解Python的执行

摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似YIELDVALUE.YIELDFROM操作码的实现,推式构造列表(List Comprehensions).生成器表达式(generator expressions)以及其他一些有趣Python的编译. 关于译者:赵斌, OneAPM工程师,常年使

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

2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编

20145339《信息安全系统设计基础》第十一周学习总结

第八章 异常控制流 平滑:指在存储器中指令都是相邻的. 突变:出现不相邻,通常由诸如跳转.调用.和返回等指令造成. 异常控制流ECF:即这些突变. 关于ECF: ECF是操作系统用来实现I/O.进程和虚拟存器的基本机制 应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务 ECF是计算机系统中实现并发的基本机制 软件异常机制--C++和Java有try,catch,和throw,C中非本地跳转是setjmp和longjmp 第一节 异常 异常是异常控制流的一种形式,由硬件和操