Practices6|69. x 的平方根、(哈希表)205. 同构字符串、(哈希表)1002. 查找共用字符

69. x 的平方根

1.题目:

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

示例 1:

输入:x = 4
输出:2

示例 2:

输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

2.思路:

考察:二分查找

3.代码:

public int mySqrt(int x) {
        //二分查找
        int left=0,right=x,res=-1;
        while(right>=left){
            int mid=(right+left)/2;
            if((long)mid*mid<=x){
                res=mid;
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        return res;
    }

205. 同构字符串

1.题目:

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = "egg", t = "add"
输出:true

示例 2:

输入:s = "foo", t = "bar"
输出:false

2.思路:

考察:哈希表

使用两个map 保存 s[i] 到 t[j] 和 t[j] 到 s[i] 的映射关系,如果发现对应不上,立刻返回 false

3.代码:

 public boolean isIsomorphic(String s, String t) {
        //map映射
        //map1:s[i]到t[j]的映射
        Map<Character,Character> map1=new HashMap<>();
        //map2:t[j]到s[i]的映射
        Map<Character,Character> map2=new HashMap<>();
        for(int i=0,j=0;i<s.length();i++,j++){
            if(!map1.containsKey(s.charAt(i))){
                map1.put(s.charAt(i),t.charAt(j));
            }
            if(!map2.containsKey(t.charAt(j))){
                map2.put(t.charAt(j),s.charAt(i));
            }
            if(map1.get(s.charAt(i))!=t.charAt(j) || map2.get(t.charAt(j))!=s.charAt(i)){
                return false;
            }
        }
        return true;
    }

1002. 查找共用字符

1.题目:

给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。

示例 1:

输入:words = ["bella","label","roller"]
输出:["e","l","l"]

示例 2:

输入:words = ["cool","lock","cook"]
输出:["c","o"]

2.思路:

哈希:字母+求频率

将字符映射到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。

 统计出搜索字符串里26个字符的出现的频率,然后取每个字符频率最小值,最后转成输出格式

注意:

基本数据类型之间的运算规则:

byte、char、short -> int -> long -> float -> double

注意:byte、char、short这三种数据类型做运算时,结果为int型。

public static void main(String[] args) {
        char one = 'a';  //97
        char two = 'b';  //98
        int three = 10;
        String str = "hello";
        System.out.println(one + three);  //107
        System.out.println(one + str);    //ahello
        System.out.println(three + str);  //10hello
        System.out.println(one + 2);      //99
        System.out.println(one + two);    //195
}

从小到大:自动类型提升

从大到小:强制类型转换

3.代码:

public List<String> commonChars(String[] words) {
        List<String> result=new ArrayList<>();
        int[] hash=new int[26];
        //字符串数组的每个元素是由字符串组成,length()方法。数组length属性。
        for(int i=0;i<words[0].length();i++){
            hash[words[0].charAt(i)-'a']++;
        }
        for(int i=1;i<words.length;i++){
            int[] hashOther=new int[26];
            for(int j=0;j<words[i].length();j++){
                hashOther[words[i].charAt(j)-'a']++;
            }
            for(int k=0;k<hash.length;k++){
                hash[k]=Math.min(hash[k],hashOther[k]);
            }
        }
        for(int i=0;i<26;i++){
            while(hash[i]!=0){
                result.add(String.valueOf((char)(i+'a')));
                hash[i]--;//每个字符可能重复出现,
            }
        }
        return result;
    }

Microsoft.Practices.EnterpriseLibrary.Data是一个强大的.NET框架,用于开发企业级应用程序。连接字符串是用于连接到数据库的重要组成部分。在某些情况下,我们需要对连接字符串进行加密以增加安全性。 要对连接字符串进行加密,我们可以使用Microsoft提供的企业库(Enterprise Library)中的数据访问块(Data Access Block)。以下是一些步骤: 1. 首先,我们需要在项目中添加对Microsoft.Practices.EnterpriseLibrary.Data的引用。可以通过NuGet包管理器来安装。 2. 接下来,我们需要在config文件中定义连接字符串。可以使用app.config(用于Windows桌面应用程序)或web.config(用于Web应用程序)文件。例如: ``` <connectionStrings> <add name="MyDatabase" connectionString="[Your Connection String Here]" providerName="System.Data.SqlClient" /> </connectionStrings> ``` 3. 然后,我们需要在config文件中配置加密。可以在configSections中添加以下配置: ``` <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" /> ``` 并在configuration节点下添加以下配置: ``` <dataConfiguration defaultDatabase="MyDatabase" /> ``` 4. 接下来,我们需要使用工具对连接字符串进行加密。可以使用命令行实用程序`encrypt.exe`,该程序位于Enterprise Library安装目录的bin文件夹中。 打开命令提示符,并导航到`encrypt.exe`所在的目录。然后使用以下命令对连接字符串进行加密: ``` encrypt.exe -section:connectionStrings -prov DataProtectionConfigurationProvider -appConfig "path\to\your\config\file" ``` 这将使用Windows数据保护API对连接字符串进行加密,并将结果存储在config文件中。 5. 最后,我们可以在代码中使用加密后的连接字符串。使用DatabaseFactory类的CreateDatabase方法来获取数据库实例。例如: ```csharp Database db = DatabaseFactory.CreateDatabase(); ``` 通过以上步骤,我们可以使用Microsoft.Practices.EnterpriseLibrary.Data的加密功能对连接字符串进行加密。这将增加我们应用程序的安全性,并保护敏感的数据库连接信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值