0
点赞
收藏
分享

微信扫一扫

LeetCode | 最大长度乘积、替换所有问号

 

目录

318.最大单词长度乘积

1. 题目描述

2. 题解

1567. 替换所有的问号

1. 题目描述

2. 题解


318.最大单词长度乘积

1. 题目描述

2. 题解

(1)暴力破解

public static int maxProduct(String[] words) {
	int Maxnum = 0;
	
	for(int i=0;i<words.length-1;i++) {
		for(int j=i+1;j<words.length;j++) {
			boolean flag = true;
			for(int k=0;k<words[j].length();k++) {//遍历其中一个字符串
				if (words[i].contains(String.valueOf(words[j].charAt(k)))) {//判断该字符串中字母是否在另一个字符串中出现
					flag = false;
					break;
				}
			}
			if(flag && (words[i].length()*words[j].length() > Maxnum)){
				Maxnum = words[i].length()*words[j].length();
			}
		}
	}
	return Maxnum;
 }

输出:

(2) 利用位运算

public static int maxProduct_1(String[] words) {
	int n = words.length;
       int[] hash = new int[n];
       int max = 0;
       for(int i = 0; i < n; ++i) {
           for(char c : words[i].toCharArray()) {
           	hash[i] |= 1 << (c-'a');
           }                
       }
       
       for(int i = 0; i < n-1; ++i) {
           for(int j = i+1; j < n; ++j) {
               if((hash[i] & hash[j]) == 0)
                  max = Math.max(words[i].length() * words[j].length(), max);
           }
       }
       return max;
}

 输出;

1567. 替换所有的问号

1. 题目描述

2. 题解

(1)暴力破解

public static String modifyString(String s) {
	StringBuilder ss = new StringBuilder(s);
	
	for(int i=0;i<s.length();i++) {
		if(s.charAt(i)=='?') {
			if(i>0 && i<s.length()-1) {
				for(char j ='a';j<='z';j++) {
					if(j != s.charAt(i-1) && j != s.charAt(i+1)) {
						ss.setCharAt(i, j); break;
					}
				}
			}
			else if (i == 0 && s.length() > 1) {
				for(char j ='a';j<='z';j++) {
					if(j != s.charAt(i+1)) {
						ss.setCharAt(0, j);break;
					}
				}
			}
			else if(i == s.length()-1 && s.length() > 1) {
				for(char j ='a';j<='z';j++) {
					if(j != s.charAt(i-1)) {
						ss.setCharAt(s.length()-1, j);break;
					}
				}
			}
			else {
				ss.setCharAt(s.length()-1, 'a');
			}
		}
		s=ss.toString();
	}

		return ss.toString();
	}

输出:

 

(2)去边界

 

public static String modifyString_1(String s) {
	char[] ss = ('a'+s+'a').toCharArray();
	
	for(int i=1;i<ss.length-1;i++) {
		if(ss[i] == '?') {
			for(char j = 'a' ;j<='c';j++) {
				if(j!= ss[i-1] && j!= ss[i+1]) {
					ss[i] = j;break;
				}
			}
		}
	}
	
	return String.valueOf(ss, 1, ss.length-2);
}

输出:

 

举报

相关推荐

0 条评论