★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:为敢(WeiGanTechnologies)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/11333863.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Given two strings str1 and str2 of the same length, determine whether you can transform str1 into str2 by doing zero or more conversions.

In one conversion you can convert all occurrences of one character in str1 to any other lowercase English character.

Return true if and only if you can transform str1 into str2.

Example 1:

Input: str1 = "aabcc", str2 = "ccdee"
Output: true
Explanation: Convert 'c' to 'e' then 'b' to 'd' then 'a' to 'c'. Note that the order of conversions matter.

Example 2:

Input: str1 = "leetcode", str2 = "codeleet"
Output: false
Explanation: There is no way to transform str1 to str2.

Note:

  1. 1 <= str1.length == str2.length <= 10^4
  2. Both str1 and str2 contain only lowercase English letters.

给出两个长度相同的字符串,分别是 str1 和 str2。请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化后变成字符串 str2

每一次转化时,将会一次性将 str1 中出现的 所有 相同字母变成其他 任何 小写英文字母(见示例)。

只有在字符串 str1 能够通过上述方式顺利转化为字符串 str2 时才能返回 True,否则返回 False。​​

示例 1:

输入:str1 = "aabcc", str2 = "ccdee"
输出:true
解释:将 'c' 变成 'e',然后把 'b' 变成 'd',接着再把 'a' 变成 'c'。注意,转化的顺序也很重要。

示例 2:

输入:str1 = "leetcode", str2 = "codeleet"
输出:false
解释:我们没有办法能够把 str1 转化为 str2。

提示:

  1. 1 <= str1.length == str2.length <= 10^4
  2. str1 和 str2 中都只会出现 小写英文字母

72ms

 1 class Solution {
 2     func canConvert(_ str1: String, _ str2: String) -> Bool {
 3         if str1 == str2 {return true}
 4         let n:Int = str1.count
 5         var arr:[Int] = [Int](repeating:-1,count:26)
 6         let arrS:[Int] = Array(str1).map{$0.ascii}
 7         let arrT:[Int] = Array(str2).map{$0.ascii}
 8         for i in 0..<n
 9         {
10             var x:Int = arrS[i] - 97
11             var y:Int = arrT[i] - 97
12             if arr[x] == -1
13             {
14                 arr[x] = y
15             }
16             else if arr[x] != y
17             {
18                 return false
19             }
20         }
21         var has:Int = 0
22         for i in 0..<26
23         {
24             if arr[i] != -1
25             {
26                 has += 1
27             }
28         }
29         var flag:Int = 0
30         for i in 0..<26
31         {
32             for j in (i + 1)..<26
33             {
34                 if arr[i] != -1 && arr[j] != -1 && arr[i] == arr[j]
35                 {
36                     flag = 1
37                 }
38             }
39         }
40         if has != 26 || flag != 0 {return true}
41         return false
42     }
43 }
44
45 //Character扩展
46 extension Character
47 {
48   //Character转ASCII整数值(定义小写为整数值)
49    var ascii: Int {
50        get {
51            return Int(self.unicodeScalars.first?.value ?? 0)
52        }
53     }
54 }

转载于:https://www.cnblogs.com/strengthen/p/11333863.html

[Swift]LeetCode1153. 字符串转化 | String Transforms Into Another String相关推荐

  1. Swift之字符串String的常规操作和处理

    ① Swift 字符串创建 // 类型推断 let str = "Hello" // 指定不可修改类型 let str1 : String = "Hello" ...

  2. String字符串转化为数组遍历出来

    @如何把String字符串转化为数组遍历出来 如何把String字符串转化为数组遍历出来 总结是最好的学习方式. 直接上案例代码如下: String a = "1,2,3,4,5,6&quo ...

  3. swift c语言 字符串的长度,Swift之字符串(String)

    学习一门新语言怎么能少的了字符串呢.Swift中的String和Objective-C语言中NSString还是区别不小的,Swift中的String又回归了正常状态,使用起来更为方便快捷.本篇博客的 ...

  4. java String转数组||String转集合||将字符串转化为数组

    java String转数组||String转集合||将字符串转化为数组 如果你和我一样你们公司有人这样存数据的话 这就很气人,如果用分割的方法的话 还需要去除前后两个中括号,还有两个双引号要分割,气 ...

  5. swift中字符串截取方法(substring)

    下面介绍2种swift的字符串截取方法,实际上用到了substringFromIndex,substringToIndex,substringWithRange 1.将String转化为NSStrin ...

  6. r 字符串转化为数值_Lua 字符串处理

    今天项目中遇到一个字符串处理的通用函数,一时不明白胡乱搜索后才发现原来是字符串处理库里面的通用函数,想着该理一遍字符串. 这个库提供了字符串处理的通用函数.例如字符串查找,子串,模式匹配等.当在Lua ...

  7. 如何将比Long类型更大数值字符串转化为整数

    前几天,需要做一个number类型的数据库主键唯一处理,而且有38位.于是再想使用什么规则控制唯一性.最后决定采用时间,年月日时分秒毫秒,再加随机数. 问题产生了,如何将一个38位的数字字符串转化为整 ...

  8. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  9. 算法: 把字字符串转化为整数;

    算法: 把字字符串转化为整数: * @问题: 把字符串转化为整数* 题目描述* 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返 ...

最新文章

  1. [RHEL5企业级Linux服务攻略]--第6季 Vsftpd服务全攻略之高级配置
  2. 什么是Android PendingIntent?
  3. ping 不通 华为三层交换机vlan_华为交换机常用的三种vlan划分方法,一文了解清楚vlan...
  4. OS_CORE.C(6)
  5. python3编码问题_python3编码问题
  6. ASP.Net Core MVC 发生二次请求
  7. oracle无法重命名服务器名字,重命名Oracle数据库服务器
  8. Android系统(122)---MTK 平台如何打开ActivityManagerService的debug开关
  9. Modbus协议使用常见问题分析
  10. UE4之ACharacter移动人物并显示动画效果
  11. 亲串 (hdu 2203 KMP)
  12. 免费微信公众号专用h5在线电影票API
  13. 常见服务器默认管理口地址
  14. 870987-63-6,Ir[dF(CF3)ppy]2(dtbbpy)PF6,(Ir[dF(CF3)ppy]2(dtbpy))PF6铱催化剂
  15. 数据库索引,真的越建越好吗?
  16. 《程序员》11期最新上市:互联网架构集结号
  17. MySQL DBA的修炼与未来,看看老司机们怎么说?
  18. 缓存服务器 之 Linux下缓存服务器的应用
  19. oracle会计软件技巧,财务软件输入凭证的五大技巧,太实用了!
  20. oracle建表空间

热门文章

  1. python关键词大全_Python 批量获取Baidu关键词的排名并入库
  2. php试题与答案(二),php面试题附答案二
  3. 怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口
  4. linux nginx http cache时间不对,Linux中Nginx设置proxy_cache缓存与取消缓存-linux-操作系统-壹...
  5. java连接hbase_HBase实战 | 05405.15.0Spark2使用HBaseSpark访问HBase
  6. (二分搜索)cable master
  7. java视频压缩 lz4_一种视频序列帧的压缩方法、解压方法及装置与流程
  8. linux脚本安装gcc,在Linux系统下不需要编译安装GCC9,有仓库安装模板脚本
  9. 一张纸厚度是多少毫米_大洼20毫米水泥纤维板多少钱一张追求至善
  10. MySQL 删除视图