剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换

网友投稿 290 2022-08-19


剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换

题目一

解法

class Solution {

public String toLowerCase(String s) {

StringBuilder sb = new StringBuilder();

for(int i = 0;i

char ch = s.charAt(i);

if('A'<=ch&&ch<='Z'){

ch = (char)(ch+32);

}

sb.append(ch);

}

return sb.toString();

}

}

题目二

解法

class Solution {

public int pivotIndex(int[] nums) {

int sum = 0;

for(int i = 0;i

sum+=nums[i];

}

int left = 0;

int right = sum;

for(int i = 0;i

right = right-nums[i];

if(i == 0){

left = 0;

if(right==left) return 0;

}else{

left+=nums[i-1];

if(right==left){

return i;

}

}

}

MrJdglreturn -1;

}

}

题目三

解法

class Solution {

public List selfDividingNumbers(int left, int right) {

ArrayList list = new ArrayList();

for(int i = left;i<=right;i++){

if(selfDividing) list.add(i);

}

return list;

}

public boolean selfDividing(int n) {

for (char c: String.valueOf(n).toCharArray()) {

if (c == '0' || (n % (c - '0') > 0))

return false;

}

return true;

}

}

题目四

解法

class Solution {

public char nextGreatestLetter(char[] letters, char target) {

int left = 0;

int right = letters.length;

while(left

int mid = left+(right-left)/2;

if(letters[mid]<=target){

left = mid+1;

}else{

right = mid;

}

}

return left==letters.length?letters[0]:letters[left];

}

}

char ch = s.charAt(i);

if('A'<=ch&&ch<='Z'){

ch = (char)(ch+32);

}

sb.append(ch);

}

return sb.toString();

}

}

题目二

解法

class Solution {

public int pivotIndex(int[] nums) {

int sum = 0;

for(int i = 0;i

sum+=nums[i];

}

int left = 0;

int right = sum;

for(int i = 0;i

right = right-nums[i];

if(i == 0){

left = 0;

if(right==left) return 0;

}else{

left+=nums[i-1];

if(right==left){

return i;

}

}

}

MrJdglreturn -1;

}

}

题目三

解法

class Solution {

public List selfDividingNumbers(int left, int right) {

ArrayList list = new ArrayList();

for(int i = left;i<=right;i++){

if(selfDividing) list.add(i);

}

return list;

}

public boolean selfDividing(int n) {

for (char c: String.valueOf(n).toCharArray()) {

if (c == '0' || (n % (c - '0') > 0))

return false;

}

return true;

}

}

题目四

解法

class Solution {

public char nextGreatestLetter(char[] letters, char target) {

int left = 0;

int right = letters.length;

while(left

int mid = left+(right-left)/2;

if(letters[mid]<=target){

left = mid+1;

}else{

right = mid;

}

}

return left==letters.length?letters[0]:letters[left];

}

}

sum+=nums[i];

}

int left = 0;

int right = sum;

for(int i = 0;i

right = right-nums[i];

if(i == 0){

left = 0;

if(right==left) return 0;

}else{

left+=nums[i-1];

if(right==left){

return i;

}

}

}

MrJdglreturn -1;

}

}

题目三

解法

class Solution {

public List selfDividingNumbers(int left, int right) {

ArrayList list = new ArrayList();

for(int i = left;i<=right;i++){

if(selfDividing) list.add(i);

}

return list;

}

public boolean selfDividing(int n) {

for (char c: String.valueOf(n).toCharArray()) {

if (c == '0' || (n % (c - '0') > 0))

return false;

}

return true;

}

}

题目四

解法

class Solution {

public char nextGreatestLetter(char[] letters, char target) {

int left = 0;

int right = letters.length;

while(left

int mid = left+(right-left)/2;

if(letters[mid]<=target){

left = mid+1;

}else{

right = mid;

}

}

return left==letters.length?letters[0]:letters[left];

}

}

right = right-nums[i];

if(i == 0){

left = 0;

if(right==left) return 0;

}else{

left+=nums[i-1];

if(right==left){

return i;

}

}

}

MrJdglreturn -1;

}

}

题目三

解法

class Solution {

public List selfDividingNumbers(int left, int right) {

ArrayList list = new ArrayList();

for(int i = left;i<=right;i++){

if(selfDividing) list.add(i);

}

return list;

}

public boolean selfDividing(int n) {

for (char c: String.valueOf(n).toCharArray()) {

if (c == '0' || (n % (c - '0') > 0))

return false;

}

return true;

}

}

题目四

解法

class Solution {

public char nextGreatestLetter(char[] letters, char target) {

int left = 0;

int right = letters.length;

while(left

int mid = left+(right-left)/2;

if(letters[mid]<=target){

left = mid+1;

}else{

right = mid;

}

}

return left==letters.length?letters[0]:letters[left];

}

}

int mid = left+(right-left)/2;

if(letters[mid]<=target){

left = mid+1;

}else{

right = mid;

}

}

return left==letters.length?letters[0]:letters[left];

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot @Value注入boolean设置默认值方式
下一篇:剑指Offer之Java算法习题精讲字符串操作与数组及二叉搜索树
相关文章

 发表评论

暂时没有评论,来抢沙发吧~