Перечисления C ++ начинаются с 0?

Я знаю, что эта ветка является старой, и исходный вопрос был для простого решения, но если он должен быть действительно быстрым, вы должны использовать массив символов.

public static String pad(String str, int size, char padChar)
{
    if (str.length() < size)
    {
        char[] temp = new char[size];
        int i = 0;

        while (i < str.length())
        {
            temp[i] = str.charAt(i);
            i++;
        }

        while (i < size)
        {
            temp[i] = padChar;
            i++;
        }

        str = new String(temp);
    }

    return str;
}

решение форматера не является оптимальным. просто построение строки формата создает две новые строки.

Решение apache можно улучшить, инициализируя sb с целевым размером, заменяя ниже

StringBuffer padded = new StringBuffer(str); 

на

StringBuffer padded = new StringBuffer(pad); 
padded.append(value);

будет препятствовать росту внутреннего буфера sb.

42
задан Community 23 May 2017 в 10:31
поделиться