资讯专栏INFORMATION COLUMN

GoLang 字符串变位词

shixinzhang / 1070人阅读

摘要:实现其中关键点定义保存最后判断两个字符串是否相同的长度的取值根据表可以知道第一个单字符的进制值位最后一个单字符进制值位得到之间的差值为这里预测每个字符都被使用到了所以长度直接定义为了实现和上面类似欢迎加入学习交流群,大家一起学习交流。

GoLang 实现
func solution(s , t string)bool{

if s == t {
    return true
}
length := len(s)
if  length != len(t) {
    return false
}
//" " 32  --> ~ 126
const MAX_ASCII int= 94
const SPACE_INDEX rune = 32

numbers := [MAX_ASCII]int{}
sRune := []rune(s)
tRune :=[]rune(t)

for i := 0 ; i < length ; i++ {
    index := tRune[i] - SPACE_INDEX
    numbers[index]++

    index = sRune[i] - SPACE_INDEX
    numbers[index]--
}
for i := 0 ; i < MAX_ASCII / 2 ; i++{
    mergeSize :=  numbers[i]
    if mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]{
        return false
    }
}
return true

}

其中关键点1 :

定义保存最后判断两个字符串是否相同的 长度的取值:

根据ASCII 表可以知道:
第一个单字符 " " 的10 进制值位32 , 最后一个单字符 "~" 10进制值位 126 , 得到之间的差值为 94 ,
这里预测每个字符都被使用到了, 所以长度直接定义为 94了.

Java 实现 和上面类似:
public boolean anagram(String s, String t) {

    if (s == null || t == null || s.length() ==0 || s.length() != t.length()){
        return false;
    }
    if (s.equals(t))return true;

    final int MAX_ASCII = 94;
    final char SPACE_INDEX = " ";

    int[] numbers = new int[MAX_ASCII];
    int length = s.length();

    char[] sCharArray = s.toCharArray();
    char[] tCharArray = t.toCharArray();

    for(int i = 0 ; i< length ; i++){
        int index = sCharArray[i] - SPACE_INDEX;
        numbers[index]++;

        index = tCharArray[i] - SPACE_INDEX;
        numbers[index]--;
    }

    for (int i =0 ; i < MAX_ASCII / 2 ; i++ ) {
        int mergeSize = numbers[i];
        if ( mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]){
            return false;
        }
    }
    return true;
}

欢迎加入学习交流群569772982,大家一起学习交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67651.html

相关文章

  • Java™ 教程(Map接口)

    Map接口 Map是将键映射到值的对象,map不能包含重复的键:每个键最多可以映射一个值,它模拟数学函数抽象。Map接口包括基本操作的方法(如put、get、remove、containsKey、containsValue、size和empty),批量操作(如putAll和clear)和集合视图(如keySet、entrySet和values)。 Java平台包含三个通用Map实现:HashMap...

    Kahn 评论0 收藏0
  • 符串处理文章outline

    摘要:遇到问题查查,看看,大神的讲解问问岛胖君下面是我最近整理出来的关于字符串的文章的怎么翻译汇集目录非常希望强化博客的功能,比如分类,置顶。 虽是读书笔记,但是如转载请注明出处 http://segmentfault.com/blog/exploring/ .. 拒绝伸手复制党 最近在看算法和语言,基本属于看知识 --> java实现 --> 整理blog 这个路线。 遇到问题查查st...

    Karuru 评论0 收藏0
  • 我的面试准备过程---符串相关(更新中)

    摘要:字符串简介内置类型,不可理性,要更改的话考虑转,之类对来说,一个的范围,位面试题总体分析和数组相关,内容广泛概念理解字典序,哪个排在字典前面,哪个字典序就小简单操作插入删除字符,旋转规则判断罗马数字转换,是否是合法的整数浮点数数字运算套数加 字符串简介 String 内置类型,不可理性,要更改的话考虑转StringBuffer,StringBuilder,char[]之类 对java来...

    周国辉 评论0 收藏0
  • Fabric与dep

    摘要:但是在与此同时出现了然后随着的出现,又更名为,真的是百家争鸣那。采用文件来追踪依赖,而不是的和文件。然而他们并不想提交大量的文件,因为链码程序仅仅是个小的代码库。想必在年会逐渐替换以及中的,希望可以终结混乱的包管理机制。 作者: TopJohn原文连接:https://www.xuanzhangjiong.to... Fabric与dep 个人感受 接触Golang有2年时间了,从最...

    王陆宽 评论0 收藏0

发表评论

0条评论

shixinzhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<