1、给你一个由若干 0 和 1 组成的字符串s,请你计算并返回将该字符串分割成两个子字符串(即左子字符串和右子字符串, 子字符串允许为空)所能获得的最大得分。
已知分割字符串的得分规则如下:
左子字符串中:0得2分,1得1分
右子字符串中:1得2分,0得1分
子字符串为空则得0分
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
String str = buf.readLine();
String testStr=str;
int max=0;String leftLastStr="";
for(int i=0;i<=testStr.length();i++){
String leftStr=testStr.substring(0,i);
String rightStr=testStr.substring(i);
int leftNum=getScore(true,leftStr);
int rightNum=getScore(false,rightStr);
if(max<leftNum+rightNum){
max=leftNum+rightNum;
leftLastStr=leftStr;
}
}
System.out.println( max);
}
public static int getScore(boolean leftFlag,String str){
char strArr[]=str.toCharArray();
int num=0;
if(leftFlag){
for(int i=0;i<strArr.length;i++){
if(strArr[i]=='1'){
num+=1;
}else{
num+=2;
}
}
}else{
for(int i=0;i<strArr.length;i++){
if(strArr[i]=='1'){
num+=2;
}else{
num+=1;
}
}
}
return num;
}
}
2、如果一个数组nums中的两个索引 i 和 j,使得 nums [i]+nums [j]=T,并且 i 和 j 的差的绝对值至多为 K,我们称这两个数字为数组中的对称数。
当前给定一个数组nums,以及两个整数T,K,问有多少组对称数?
输入例子1:
7 3
1 2 3 4 5 6 7
输出例子1:
2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
String str1 = buf.readLine();
String str2 = buf.readLine();
int add=Integer.parseInt(str1.split(" ")[0]);int distance=Integer.parseInt(str1.split(" ")[1]);
String[] num =str2.split(" ");
int count=0;
for(int i=0;i<num.length;i++){
for(int j=1;j<=distance;j++){
if(i+j<num.length){
int a=Integer.parseInt(num[i]);
int b=Integer.parseInt(num[i+j]);
if(a+b==add){
count++;
}
}
}
}
System.out.println(count);
}
}
3、小选线下店最近准备新上架一批长度不等的商品, 用一个数组表示商品的长度,已知货架每一层的长度固定为X。
小选线下店是一个追求生活美学的店铺,为了摆放美观,每一层至多摆放两个商品,而且商品的总长度不能比货架长度长(已知单个商品的长度都不会比货架长)
请问至少需要多少层的货架,才能漂亮的摆放这些商品呢?
import java.io.BufferedReader;
import java.util.Arrays;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
String str1 = buf.readLine();
String str2 = buf.readLine();
int len=Integer.parseInt(str1);
String[] num =str2.split(" ");
int[] nums=new int(num.length);
for(int i=0;i<num.length;i++){
nums[i]=Integer.parseInt(num[i]);
}
Arrays.sort(nums);
int count=0;
for(int i=0;i<nums.length;i++){
for(int j=nums.length-1;j>i;j--){
if(nums[i]+nums[j]<len)
}
}
}