找质数(图算法)
找出大于200的最小的质数 解答:
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
public static void main(String[] args) throws java.lang.Exception {
int n = 201;
while (true) {
boolean b = true;
for (int i = 2; i < n / 2; i++) {
if (n % i == 0)
b = false;
}
if (b)
break;
n++;
}
System.out.println(n);
}
}
交错字符串(字符串、动态规划)
给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2_ _**交错 **组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:
- s = s1 + s2 + ... + sn
- t = t1 + t2 + ... + tm
- |n - m| <= 1
- 交错 是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...
**提示:**a + b 意味着字符串 a 和 b 连接。
示例 1:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出:true
示例 2:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false
示例 3:
输入:s1 = "", s2 = "", s3 = ""
输出:true
提示:
- 0 <= s1.length, s2.length <= 100
- 0 <= s3.length <= 200
- s1、s2、和 s3 都由小写英文字母组成
解答:
class Solution {
public boolean isInterleave(String s1, String s2, String s3) {
if ((s1.length() + s2.length()) != s3.length())
return false;
boolean[][] dp = new boolean[s2.length() + 1][s1.length() + 1];
dp[0][0] = true;
for (int i = 1; i <= s1.length(); i++) {
dp[0][i] = dp[0][i - 1] && s1.charAt(i - 1) == s3.charAt(i - 1) ? true : false;
}
for (int i = 1; i <= s2.length(); i++) {
dp[i][0] = dp[i - 1][0] && s2.charAt(i - 1) == s3.charAt(i - 1) ? true : false;
}
for (int i = 1; i < dp.length; i++) {
for (int j = 1; j < dp[0].length; j++) {
dp[i][j] = (dp[i][j - 1] && s1.charAt(j - 1) == s3.charAt(i + j - 1))
|| (dp[i - 1][j] && s2.charAt(i - 1) == s3.charAt(i + j - 1));
}
}
return dp[s2.length()][s1.length()];
}
}
有效数字(字符串)
有效数字(按顺序)可以分成以下几个部分:
- 一个 小数 或者 整数
- (可选)一个 'e' 或 'E' ,后面跟着一个 整数
小数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符('+' 或 '-')
- 下述格式之一:
- 至少一位数字,后面跟着一个点 '.'
- 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
- 一个点 '.' ,后面跟着至少一位数字
整数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符('+' 或 '-')
- 至少一位数字
部分有效数字列举如下:
- ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]
部分无效数字列举如下:
- ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]
给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。
示例 1:
输入:s = "0"
输出:true
示例 2:
输入:s = "e"
输出:false
示例 3:
输入:s = "."
输出:false
示例 4:
输入:s = ".1"
输出:true
提示:
- 1 <= s.length <= 20
- s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,或者点 '.' 。
以下程序实现了这一功能,请你填补空白处内容:
class Solution {
char[] chars;
boolean point = false;
boolean exponent = false;
public boolean isNumber(String s) {
s = s.trim();
int length = s.length();
if (length == 0) {
return false;
}
chars = s.toCharArray();
String[] ss = s.split("e");
if (ss.length == 0) {
return false;
}
if (ss[0].length() == 0)
return false;
if (ss[0].length() < length)
exponent = true;
if (ss[0].length() == length - 1) {
return false;
}
String[] pre = ss[0].split("\\.");
if (pre.length == 0) {
return false;
}
if (pre[0].length() < ss[0].length())
point = true;
boolean result = pre(0, pre[0].length());
result = result && middle(pre[0].length() + 1, ss[0].length());
if (exponent) {
result = result && is(ss[0].length() + 1, length);
}
return result;
}
____________________________;
public boolean middle(int i, int length) {
if (i >= length && point) {
if (chars[i - 2] >= '0' && chars[i - 2] <= '9') {
return true;
}
return false;
}
for (; i < length; i++) {
if (chars[i] < '0' || chars[i] > '9') {
return false;
}
}
return true;
}
public boolean is(int i, int length) {
if (i == 1) {
return false;
}
if (chars[i] == '+' || chars[i] == '-') {
i++;
}
if (i == length) {
return false;
}
for (; i < length; i++) {
if (chars[i] < '0' || chars[i] > '9') {
return false;
}
}
return true;
}
}
解答:
public boolean pre(int i, int length) {
if (i >= length) {
return true;
}
if (chars[i] == '+' || chars[i] == '-') {
i++;
}
if (i == length && !point) {
return false;
}
for (; i < length; i++) {
if (chars[i] < '0' || chars[i] > '9') {
return false;
}
}
return true;
}
本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页:共饮一杯无的博客汇总👨💻
保持热爱,奔赴下一场山海。🏃🏃🏃