Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.math.*;
- import java.security.*;
- import java.text.*;
- import java.util.*;
- import java.util.concurrent.*;
- import java.util.function.*;
- import java.util.regex.*;
- import java.util.stream.*;
- import static java.util.stream.Collectors.joining;
- import static java.util.stream.Collectors.toList;
- class Result {
- /*
- * Complete the 'segments' function below.
- *
- * The function is expected to return a STRING_ARRAY.
- * The function accepts STRING message as parameter.
- */
- public static List<String> segments(String message) {
- /*final int limit = 155;
- String[] splitted = message.split(" ");
- int n = splitted.length;
- List<String> ret = new ArrayList<>();
- for(int i=0; i<n-1; ++i){
- String cur = splitted[i];
- while((cur+1+splitted[i+1]).length() <= limit && i+1 <n-1){
- cur = cur + " " + splitted[i+1];
- ++i;
- }
- ret.add(cur);
- }
- String last = ret.get(ret.size()-1);
- if(last.length()+1+splitted[n-1].length() < limit){
- ret.set(ret.size()-1,last+ " " + splitted[n-1]);
- }else{
- ret.add(splitted[n-1]);
- }
- int size = ret.size();
- for(int i=0;i<size;++i){
- ret.set(i,ret.get(i)+"("+(i+1)+"/"+size+")");
- }
- return ret;*/
- List<String> ret = new ArrayList<>();
- /*int n = message.length();
- int i=0, j = -1;
- do{
- i = j+1;
- j = i + 155;
- while(j > i && j < n && message.charAt(j--) != ' '){}
- if(j<i) break;
- if(j>=n){
- j = n;
- }
- ret.add(message.substring(i,j-i));
- }while(j >= n-1);
- return ret;*/
- /*int i = 0;
- int n = message.length();
- while(i<n){
- int j = Math.max(0,Math.min(i+155,n)-1);
- boolean skip = false;
- if(j == n-1){
- skip = true;
- }
- else if(j<n && message.charAt(j+1) == ' '){
- skip = true;
- }
- int nextI = Math.max(0,j+1);
- if(!skip){
- while(i<j && message.charAt(j) != ' '){
- //--j;
- j= Math.max(0,j-1);
- }
- nextI = Math.max(0,j+1);
- while(i<j && message.charAt(j) == ' '){
- //--j;
- j= Math.max(0,j-1);
- }
- }
- int start = Math.max(0,i);
- int end = Math.max(j-i,0);
- ret.add(message.substring(start,end));
- i = nextI;
- }*/
- int n = message.length();
- int start = 0, end = 0;
- while(true){
- if(end >= n){
- ret.add(message.substring(start,n-start));
- break;
- }
- if(end - start +1 > 160){
- if(message.charAt(end) != ' '){
- while(message.charAt(--end) != ' '){
- }
- }
- ret.add(message.substring(Math.max(0,start),Math.max(0,end-start)));
- start = ++end;
- }else{
- ++end;
- }
- }
- return ret;
- }
- }
- public class Solution {
- ____________________________________________
- #include <bits/stdc++.h>
- using namespace std;
- /*
- * Complete the 'segments' function below.
- *
- * The function is expected to return a STRING_ARRAY.
- * The function accepts STRING message as parameter.
- */
- vector<string> segments(string message) {
- int i = 0;
- vector<string> ret;
- int n = message.size();
- while(i<n){
- int start = i;
- i+=155;
- while(i<n && message[i] != ' '){
- --i;
- }
- int spaceAt = i;
- ret.push_back(message.substr(start,spaceAt+1));
- ++i;
- }
- int s = ret.size();
- for(int a=0;a<s;++a){
- string cur = "(" + to_string((a+1)) + "/" + to_string(s) + ")";
- ret[i] = ret[i].append(cur);
- }
- return ret;
- }
- int main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement