日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串变形词

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串变形词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

變形詞:

給定兩個字符串str1和str2,如果str1和str2中出現的字符種類一樣且每種字符出現的次數也一樣,那么str1和str2互為變形詞。

HashMap 解法:

HashMap的主要方法

int size() :得到Map中“鍵-值對”的數量

boolean isEmpty() :Map是否是空的,也就是是否不含有任何“鍵-值對”

boolean containsKey(Object key) :Map中是否含有以key為鍵的“鍵-值對”

boolean containsValue(Object value) :Map中是否含有以 value 為值的“鍵-值對”

Object get(Object key) :從Map中得到以key為鍵的值,如果Map中不含有以key為鍵的“鍵-值對”則返回null

Object put(Object key, Object value) :向Map中存儲以key為鍵、value為值的“鍵-值對”

Object remove(Object key) :從Map中移除以key為鍵的“鍵-值對”

void putAll(Map t) :將另一個Map中的所有“鍵-值對”導入到此Map中

void clear() :清除所有“鍵-值對”

Set keySet() :得到所有的鍵

Collection values() :得到所有的值

Set entrySet() :得到所有的“鍵-值對”,Set中的類型是Map.Entry
原始類型 封裝類

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double
初始化HashMap<Character,Integer> s=new HashMap<Character,Integer>();

import java.util.HashMap;public class Trr {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(isdeformation("1123","1213"));}public static boolean isdeformation(String s1,String s2) {HashMap<Character,Integer> s=new HashMap<Character,Integer>();char []chas1=s1.toCharArray();char []chas2=s2.toCharArray();for(int i=0;i<s1.length();i++) {if(!s.containsKey(chas1[i]))s.put(chas1[i], 1);else {int m=(Integer)s.get(chas1[i]);s.put(chas1[i], m+1);}}for(int j=0;j<s2.length();j++) {if(!s.containsKey(chas2[j])) {return false;}else {int m=(Integer)s.get(chas2[j]);if(m-1<0) return false;s.put(chas2[j], m-1);}}return true;} }

數組解法
此題的兩個字符串種類和次數都一樣,只有順序不一樣,那么可以使用一個數組記錄第一個字符串每個字母的出現頻率次數,這樣在第二個字符串中遍歷每個字符,從數組中挨個減去,如果數組最后為空了,說明兩個字符互為變形詞。

對于數組的選擇,可以利用字符的ASCII碼值,字符可以直接和整型進行算術運算,字符串則不可以 ,例如:

‘a’+0 = 97;“a”+0 = a0;字符的編碼值出現在0~255之間,我們開辟一個266空間的整型數組map,每個字符的ASCII值對應數組的下標,例如a是97,b是98,map[97] = 3,說明a出現了3次。

public class Deformation {public static void main(String[] args){String a = "123444";String b = "344421";System.out.println(isDeformation(a,b)); }public static boolean isDeformation(String a, String b){char[] chas1 = a.toCharArray();char[] chas2 = b.toCharArray();int[] map = new int[256];if(chas1.length!=chas2.length){return false;}for(int i=0;i<chas1.length;i++){map[chas1[i]]++;}for(int i=0;i<chas2.length;i++){if(map[chas2[i]]--==0){return false;}}return true;}

算法時間復雜度:o(n)

算法空間復雜度:字符種類個數

int a='你'; System.out.println(a); 20320 為了防止這種使用HashMap.

進制

二進制:采用0和1兩個數碼來表示的數。進位規則是“逢二進一”

八進制:采用0-7八個數字計數,進位規則是“逢八進一”

十進制:采用0-9十個數字計數,進位規則是“逢十進一”

十六進制:采用0-9,A-F(10-15),進位規則是“逢十六進一”

/*** 進制轉換*/public class jinzhiTest {public static void main(String[] args) {int i = 22;//二進制 10110 = 1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=22 System.out.println(Integer.toBinaryString(i)); //10110 //八進制 26 = 2*8^1+6*8^0 = 22System.out.println(Integer.toOctalString(i)); //26//十六進制 16 = 1*16^1+6*16^0 = 22System.out.println(Integer.toHexString(i)); //16}}

字符:是各種文字和符號的總稱,包括各個國家的文字、標點符號、圖形符號、數字等。

字符集:字符集是多個符號的集合,每個字符集包含的字符個數不同。

字符編碼:字符集只是規定了有哪些字符,而最終決定采用哪些字符,每一個字符用多少個字節表示等問題,則是由編碼來決定的。計算機要準確的處理各個字符集文字,需要進行字符編碼,以便計算機能夠識別和存儲各種文字。(通過字符編碼可以把字符轉化成字節)

二、常見的字符集編碼介紹

1、ASCII字符集

1.1、定義

ASCII 字符集:美國信息互換標準代碼。是基于羅馬字母表的一套電腦編碼系統,主要顯示英語和一些西歐語言,是現今最通用的單字節編碼系統。ASCII字符集只有256個字符,用0-255之間的數字來表示。(使用7位單元的字符集01111111–>256)

1.2、包含內容

控制字符(回車鍵、退格、換行鍵等)

可顯示字符(英文大小寫、阿拉伯數字、西文符號)

擴展字符集(表格符號、計算符號、希臘字符、拉丁符號)

1.3、編碼方式

第0-31號及127號是控制字符或通訊專用字符

第32-126號是字符,其中48-57號是0-9是個阿拉伯數字,65-90號為26個大寫英文字母,97-122號為26個英文小寫字母,其余一些為標點符號,運算符號等。
其他編碼參見 : https://blog.csdn.net/xiaoxianer321/article/details/61617622

總結

以上是生活随笔為你收集整理的字符串变形词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。