zoukankan      html  css  js  c++  java
  • 算法:确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构

     1 package shuzhu;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Test {
     6         //第一种
     7         public static boolean isUniqueChars(String str) {
     8             if (str.length() > 128) {
     9                 return false;
    10             }
    11             int checker = 0;
    12             for (int i = 0; i < str.length(); i++) {
    13                 int val = str.charAt(i) - 'a';
    14                 if ((checker & (1 << val)) > 0) return false;
    15                 checker |= (1 << val);
    16             }
    17             return true;
    18         }
    19         //第二种
    20       /*定义一个bool型大小为128的数组array,然后遍历输入的字符串,每遍历一个字符,
    21         令int型变量val等于该字符的的ASCII码,如果这个字符之前都没有出现过,
    22         那么令array[val]等于true,如果这个字符之前出现过了,
    23         也就是array[val]已经等于true了,就返回false。
    24         当字符串中所有字符都遍历结束后,如果没有返回false,
    25         那么说明字符串中没有重复的字符,返回true*/
    26         public static boolean isUniqueChars2(String str) {
    27             if (str.length() > 128) {
    28                 return false;
    29             }
    30             boolean[] char_set = new boolean[128];
    31             for (int i = 0; i < str.length(); i++) {
    32                 int val = str.charAt(i);//int型变量val等于该字符的的ASCII码
    33                 if (char_set[val]) return false;
    34                 char_set[val] = true;
    35             }
    36             return true;
    37         }
    38 
    39         public static void main(String[] args) {
    40             System.out.println("请输入字符串:");
    41             Scanner s = new Scanner(System.in);
    42             String i =    s.next();        
    43             String [] words = {i};
    44             for (String word : words) {
    45                 System.out.println(word + ": " + isUniqueChars(word) + " " + isUniqueChars2(word));
    46             }
    47         }
    48 
    49     
    50 }

    数据分析与算法

  • 相关阅读:
    API之绘图(转)
    API之子窗口创建 (转)
    函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)(二)
    _cdecl 和_stdcall及其他调用方式 (一)
    sizeof的深入理解
    VC++中2进制,10进制,16进制相互转换
    传说中的数据结构
    字符串扩展
    数据结构实验之链表七:单链表中重复元素的删除
    数据结构实验之栈一:进制转换
  • 原文地址:https://www.cnblogs.com/jack4738/p/6959038.html
Copyright © 2011-2022 走看看