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,大家一起学习交流。

java变位词_GoLang 字符串变位词相关推荐

  1. java使用DFA算法实现敏感词过滤

    Java使用DFA算法实现敏感词过滤 DFA,全称 Deterministic Finite Automaton 即确定有穷自动机. 其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每 ...

  2. Java练习 基于数组的敏感词过滤/用户注册合法性判定

    用户注册 在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作: 用户名长度大于等于6位 密码长度大于等于8位,必须包含英文字母以及数字 以上两个条件同时成立注册才能成功. packa ...

  3. java敏感词屏蔽器,“敏感词过滤”功能设置

    "敏感词过滤"功能设置 "敏感词过滤"是指对互联网发布的言论和文章中含有的敏感词进行过滤.敏感词经过在互联网的传播和扩散会影响社会的稳定和用户的使用.云锁的&q ...

  4. java abc 979899_商品标题由关键词组成,关键词主要包括核心词、类目词、属性词以及长尾词四种类型。其中属性词是指...

    商品标题由关键词组成,关键词主要包括核心词.类目词.属性词以及长尾词四种类型.其中属性词是指 答:商品属性 网签备案具有创设权利的功能,能产生物权变动的效力. 答:错 下列程序执行后输出的结果是\nx ...

  5. java密码框转字符串_实现汉字的凯撒密码(内容包括:去掉字符串中的转义字符、汉字的unicode转换)...

    实验内容: 选择合适的秘钥,利用上述三个算法:熟悉恺撒密码.双重置换密码.一次一密密码算法.加密如下明文: 大风起兮云飞扬, 威加海内兮归故乡, 安得猛士兮守四方. <大风歌>--刘邦 3 ...

  6. Thinking in java 第13章 字符串 笔记+习题

    Thinking in java 第13章 字符串 学习目录 13.1 不可变String 13.2 重载"+"与StringBuilder 1. 用于String的"+ ...

  7. python 10行代码生成词云图片(基础词云、形状词云)

    一.词云简介 词云,也称为文本云或标签云.在词云图片中,关键词在文本中出现的次数越多,则表示该词越重要,其在词云中所占面积区域也越大,出现次数越少,所占面积越小.词云可任意更换背景为白色的图形以改变词 ...

  8. tf-idf词向量和bow_使用词袋Bow和TF IDF进行多标签分类

    tf-idf词向量和bow 1.加载数据 (1. Load the data) For this study, we are using Kaggle data for Toxic Comment C ...

  9. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...

最新文章

  1. 构建可扩展的GPU加速应用程序(NVIDIA HPC)
  2. RedHat、CentOS设置静态IP、主机名、关闭防火墙(虚拟机VMware客户机)
  3. Feature Schema中Module和File节点属性含义的解释
  4. 09.multi-get api操作
  5. (七) shiro 加密与解密
  6. 论文浅尝 - ACL2020 | Segmented Embedding of Knowledge Graphs
  7. JavaScript-变量的作用域 、const、let
  8. linux通过rpm和yum安装包
  9. 自然语言处理工具HanLP被收录中国大数据产业发展的创新技术新书《数据之翼》...
  10. Linux文件系统下的分区和挂载
  11. 代码管理学:如何给新员工安排工作
  12. [android界面]android中src和background区别——前景与背景
  13. 网络编程知识点复习(第一次)
  14. 点名软件—使用二项分布实现点名均匀分布
  15. 使用CyberController来将旧手机改造成电脑外挂------手机交互翻译、人脸解锁、语音识别....各个功能等你来探索
  16. K8S-四层负载均衡-Service解读
  17. latex脚注标号混合数字和特殊字符
  18. 基于soot的过程内数据流分析
  19. 电脑搜索不出网络共享文件夹内容
  20. 题解1211判断元素是否存在

热门文章

  1. echarts 浏览器兼容性_谷歌浏览器不再使用quot;黑名单quot; / iPhone可能放弃lightning充电口//微软中国被列为被执行人/QQ 音乐上线...
  2. 中国科学院大学庆生 一颗小行星以“国科大”命名
  3. 数学结果告诉你足球的赛程安排并不能做到完全公平
  4. 大数据到底有多大,人工智能到底有多能
  5. mac 上传ftp服务器文件夹权限,mac 访问 ftp服务器文件夹权限
  6. python中的return和print的区别_python中return和print的区别(详细)
  7. DataFrame不同风格比较
  8. java字典树(Trie)实现中文模糊匹配
  9. HDU3534 给你一个树让你找出其中最长路径以及个数数
  10. io_uring vs epoll ,谁在网络编程领域更胜一筹?